title: Dobre meble dla programistów

text: Jakie są dobre propozycje mebli dla tych z nas, którzy codziennie siedzą cały dzień? Interesują mnie krzesła, biurka itp... Dodatkowe punkty za zamieszczanie zdjęć. PS Czy GeekDesk jest naprawdę tak wspaniały, jak kazałby nam wierzyć Stack Overflow? To dużo sera cheddar na regulowany stół.


title: Zachowaj czujność i czujność podczas kodowania

text: Jakich metod używasz, aby nie zasnąć i zachować czujność podczas pracy? Osobiście piję kawę non stop przez cały dzień. Ale słyszałem też o tym, co nazywa się ćwiczeniami, które też powinny pomóc. Czy ktoś inny ma wskazówki i porady, jak zachować czujność i czujność podczas pracy? Czerwony Byk? Może magiczna pigułka, która nie będzie wymagała ode mnie snu?


title: W jaki sposób rotacyjni menedżerowie wydań mogą poprawić szybkość i stabilność projektu?

text: Artykuł w Wikipedii na temat Parrot VM zawiera następujące twierdzenie: > Kluczowi autorzy na zmianę tworzą wydania według odnawialnego harmonogramu, gdzie > żaden z autorów nie jest odpowiedzialny za wiele wydań z rzędu. Ta praktyka > poprawiła szybkość i stabilność projektu. Dokumentacja roli menedżera wydań firmy Parrot nie oferuje żadnego dalszego wglądu w ten proces i nie mogłem znaleźć żadnego odniesienia do roszczenia. Moje pierwsze przemyślenia były takie, że rotacja menedżerów wydań wydaje się dobrym pomysłem, dzielenie odpowiedzialności między jak najwięcej osób i posiadanie pewnego stopnia polifonii w wydaniach. Jest to chociaż? Dla Launchpada zaproponowano rotację menedżerów wydań i pojawiło się kilka interesujących kontrargumentów: > * Zarządzanie wydaniami to coś, co wymaga dobrego zrozumienia > wszystkich części kodu i uprawnień do wykonywania połączeń pod presją > w przypadku pojawienia się problemów podczas wydania > * Im mniej zmian możemy wprowadzić w procesie wydania, tym lepiej z > perspektywy operacyjnej > * Nie chcę, aby inżynier musiał uczyć się tego wszystkiego w pracy > i mieć inne rzeczy do załatwienia (regularny rozwój > obowiązki) > * Każda zmiana stref czasowych wydań musiałaby zostać zatwierdzona przez > SA > i: > Myślę, że to byłby świetny pomysł (głównie z powodu mojej żądzy władzy), > ale ja też uważam, że powinien istnieć sposób na upewnienie się, że menedżer ds. wydań nie zostanie przytłoczony, jeśli coś katastrofalnego wydarzy się w ciągu tygodnia wydań, być może poprzez zatrudnienie zastępcy menedżera ds. wydań w tym samym czasie (być może po prostu cofając się do Francisa lub Kiko wystarczy). Praktyka nie wydaje się zbyt powszechna, a kontrargumenty wydają się rozsądne i przekonujące. Jestem dość zdezorientowany, w jaki sposób poprawiłoby to prędkość i stabilność projektu, czy jest coś, czego brakuje, czy jest to po prostu zła edycja artykułu w Wikipedii? Warto zauważyć, że najczęściej głosowana odpowiedź w powiązanym „Czy zmiana głównego programisty to dobry czy zły pomysł?” pytanie śmiało zauważa: > **Nie obracaj.**


title: Czy niezmienne obiekty, które ciągle się zmieniają, wpływają na pamięć/wydajność?

text: Piszę program, który wchodzi w pętlę i zmienia stan niektórych modeli (podobnie jak w grze). Oczywiście wiele rzeczy jest zmiennych. Piszę jednak również niektóre klasy, które są niezmienne, ponieważ są z natury traktowane jak wartości (na przykład: wektory, macierze itp.). Jednak te wartości zmieniają się w każdej pętli (może 50-100 razy na sekundę). Czy to oznacza, że przy każdej zmianie program musiałby przydzielić nowy kawałek pamięci? Jeśli używam kodu zarządzanego, czy oznacza to, że użycie pamięci wzrośnie bardzo szybko? W jaki sposób wpływa to na determinizm, wydajność i usuwanie elementów bezużytecznych w językach takich jak C# i Java, zwłaszcza gdy wielu zbieraczy elementów bezużytecznych musi wstrzymać cały program w celu wyczyszczenia pamięci?


title: Umieszczanie przeczytanych książek w CV

text: Czy to dobry pomysł, jeśli w CV umieszczam przeczytane książki, a przynajmniej te związane z tworzeniem oprogramowania?


title: Czy podczas programowania korzystam z identyfikatora czy etykiety?

text: Załóżmy, że mam tabelę „Postęp” z dwiema kolumnami. Jedna kolumna to identyfikator, który jest tożsamością. Kolejna kolumna to Progress_Label ID Progress_Label 1 Przesłana 2 Zatwierdzona przez użytkownika 3 Odrzucona przez kierownictwo 4 Anulowana 5 Zakończona **Jaka jest najlepsza praktyka programistyczna**, czy powinienem iść według ID czy według etykiety? Czy w moich procedurach składowanych, funkcjach lub w metodach kodu programowania itp. powinienem wyszukiwać rekordy według identyfikatora = 3, czy też powinienem wpisać „Gdzie progress_lable jest odrzucony przez kierownictwo”? Jeśli ktoś chciałby edytować etykiety, cały kod przestałby działać, jeśli pójdę za etykietą? Przy tym samym typie, jeśli wpiszę etykietę, kod wygląda bardziej zrozumiały, ponieważ mówi dokładnie w kodzie, czego szukamy? Czy są jakieś artykuły na ten temat?


title: Zastępowanie dziedziczenia wielokrotnego delegacją

text: Przeszedłem przez „Object Oriented Modeling and Design” Jamesa Rumbaugha i in. 3. klasy i deleguj resztę Nested Generalization Nie mogłem zrozumieć przykładów podanych w tekście. Czy ktoś mógłby to wyjaśnić na przykładzie. Wiem, że "problem z diamentami" jest problemem w ramach wielokrotnego dziedziczenia, a java obsługuje wielokrotne dziedziczenie interfejsów.


title: Dlaczego istnieje słowo „Pythonic”?

text: Szczerze mówiąc, nienawidzę słowa „pythonic” – w wielu kręgach jest ono używane jako prosty synonim „dobra” i uważam, że jest to pretensjonalne. Ci, którzy go używają, po cichu mówią, że dobrego kodu nie można napisać w języku innym niż Python. Nie mówię, że Python to zły język, ale z pewnością nie jest to „** _koniec wszystkiego, bądź językiem, aby rozwiązać WSZYSTKIE problemy wszystkich na zawsze!_**” (ponieważ ten język nie istnieje). Wygląda na to, że ludzie używający tego słowa naprawdę mają na myśli "idiomatic" zamiast "Pythonic" - i oczywiście słowo "idiomatic" już istnieje. Dlatego zastanawiam się: dlaczego istnieje słowo „Pythonic”?


title: Jak zmaksymalizować szanse na sukces w rozmowie HR?

text: Niedawno zostałem odrzucony na stanowisko Junior Web Developer po pierwszej rozmowie z dwoma pracownikami HR. Osobiście uważam, że to szaleństwo, że ktoś, kto nie napisał ani jednej linijki kodu w swoim życiu, może podejmować decyzje o zatrudnieniu programistów - rozmowa trwała półtorej godziny i nie zadali ani jednego pytania technicznego! Nie chodzi jednak o opinie. Pomijając opinię, moje pytania brzmią: 1. Jak często decyzje o zatrudnieniu są podejmowane przez personel nietechniczny? 2. I co ważniejsze… co programista może zrobić, aby podkreślić swoje umiejętności i wywrzeć pozytywny wpływ na rozmowę kwalifikacyjną?


title: Czy to typowe dla dużych firm zajmujących się oprogramowaniem, aby nie dokumentować lub refaktorować kod?

text: Rozpocząłem pracę w dużej firmie programistycznej i zostałem przydzielony do projektu, który ma ponad półtora miliona linijek kodu. Jest to część pakietu programów sprzedawanych klientom (nie projekt wewnętrzny), a kod źródłowy można kupić, jeśli chcą (chociaż biorąc pod uwagę dodatkowe opłaty z tym związane, wydaje się to rzadkie). Zajmują się projektowaniem oprogramowania od lat, a ich obecne produkty mają być kontynuowane w dającej się przewidzieć przyszłości. Ku mojemu zdziwieniu, w półtora miliona linijek kodu brakuje prawie całkowicie dokumentacji. Co więcej, istnieją pewne obszary kodu, które są niezwykle kłopotliwe do naśladowania lub mogą wymagać refaktoryzacji, aby stać się znacznie łatwiejszym do zrozumienia (na przykład ulepszenie języka programowania, które pojawiło się około 10 lat temu, co spowodowałoby, że duże fragmenty kodu byłyby znacznie czystsze, nie wspominając o mniej podatnych na błędy). Wydaje się, że nie ma żadnych wysiłków, aby to naprawić, a moje oferty, aby to zrobić dla części, z którymi pracuję, spotkały się z oporem, na który tak naprawdę nigdy nie otrzymałem jasnej odpowiedzi. Czy te praktyki są powszechne w dużej firmie z branży oprogramowania? A może moja firma jest wyjątkowa pod względem braku refaktoryzacji i dokumentacji? Dodatek: Na podstawie niektórych komentarzy chciałbym wyjaśnić, czego szukam. Rozumiem, że moja firma ma dług techniczny i to jest złe. Nie chcę ustalić, czy moja firma jest z tego powodu gorsza, chcę tylko wiedzieć, czy ten brak dokumentacji i opór wobec refaktoryzacji jest faktem w świecie programowania, który będę miał się z tym uporać, jeśli nadal będę w nim pracować.


title: Czy pytanie o sumy kontrolne w pliku jest przestarzałym sposobem weryfikacji pliku?

text: Jestem na nowym stanowisku, gdzie muszę regularnie przetwarzać pliki płaskie. Ostatni raz robiłem to 5 lub 6 lat temu, ale w ramach układu plików otrzymałem sumy kontrolne. Dało mi to uproszczone informacje o pliku, takie jak łączna liczba rekordów, a także sumy ważnych pól. Pomogło mi to podczas testów, a także podczas produkcji, aby zweryfikować, czy plik dotarł i zawiera prawidłowe informacje. Poprosiłem o podobne dane dla tego nowego projektu i uderzyłem w ścianę nie. Czy to już nie jest standardowa praktyka? Czy jest lepszy sposób?


title: Czym różni się „Programista” od „Konsultanta ds. Oprogramowania”? Co czyni konsultanta?

text: Widziałem wiele osób, które twierdziły, że są „konsultantami ds. oprogramowania”. Ci konsultanci robią to, co robi normalny programista, piszą kod, szacują zadania, naprawiają błędy, uczestniczą w spotkaniach itp. Jedyna różnica polega na tym, że finanse, konsultanci zarabiają więcej. Czym zatem różni się programista od „konsultanta”? Oprócz głównego pytania chciałbym wiedzieć, w jaki sposób programista może zostać konsultantem? Czy są jakieś konkretne wytyczne dla konsultanta? Czy muszą gromadzić certyfikaty i pisać prace badawcze? Proszę nie mylić konsultanta ds. oprogramowania z konsultantem ds. zarządzania. Konsultanci oprogramowania, których widziałem, nie są menedżerami.


title: Wielokrotna atrybucja w Pythonie, JS, ...?

text: Przypadkowo odkryłem ten `a=b=c=d=e=f=2` w interpreterze Pythona(2.7)(i JavaScript kilka minut później). Czy jest to funkcja, czy po prostu sposób, w jaki działa interpreter, jeśli jest to funkcja, jak to się nazywa ? Czy inne języki mają tę funkcję?


title: Jaka jest koncepcja zużycia oprogramowania?

text: Słyszałem, że z biegiem czasu oprogramowanie może zacząć wykazywać oznaki zużycia. Co oznacza zużycie oprogramowania? Oprogramowanie samo w sobie nie jest bytem fizycznym, więc jak może wystąpić zużycie?


title: Nie możesz debugować zakodowanego javascriptu?

text: Mam problemy z debugowaniem zakodowanego javacscript. Ten skrypt, do którego się odnoszę, podany w tym linku tutaj. Kodowanie tutaj jest proste i działa poprzez przesunięcie wartości Unicode na dowolny kod Codekey użyty podczas kodowania. Kod, który dokonuje dekodowania, jest podany poniżej w prostym języku angielskim:- <script language="javascript"> function dF(s){ var s1=unescape(s.substr(0,s.length-1)); zmienna t=''; for(i=0;i<s1.length;i++)t+=String.fromCharCode(s1.charCodeAt(i)-s.substr(s.length-1,1)); document.write(unescape(t)); } </script> Interesuje mnie poznanie lub zrozumienie wartości (np. s1,t). Jak na przykład, gdy wartość i=0, jakie wartości miałyby następujące atrybuty/metody s1.charCodeAt(i) i s.substr(s.length-1,1) Powodem, dla którego to robię, jest zrozumienie jak naprawdę działa funkcja CodeKey. Nie widzę w powyższym kodzie niczego, co każe dekodować na podstawie wartości codekey. Jedyne, co mogę wskazać w kodowanym tekście, to ostatni znak, który jest ustawiony na 1 , 2 , 3 lub 4 w zależności od klucza wybranego podczas kodowania. Można to zweryfikować za pomocą linku, który podałem powyżej. Jednak do debugowania używam dodatku firebug ze skryptem działającym jako localhost na moim serwerze wamp. Jestem w stanie umieścić punkt przerwania na js za pomocą firebuga, ale nie mogę pobrać żadnego z parametrów lub funkcji zdefiniowanych przez użytkownika, o których wspomniałem powyżej. Chcę wiedzieć w tym kontekście, jaki byłby najlepszy sposób na debugowanie tego zakodowanego js. **EDYTUJ** @blueberryfields Dzięki za zgrabny przegląd kodu. Jednak, aby wyjaśnić, to nie jest praca domowa, to coś, co wybrałem ze strony internetowej o kodowaniu i javascript. Materiał po prostu wyglądał interesująco i postanowiłem spróbować. Nie widzę sensu używania zmiennych pośrednich, ponieważ miałem nadzieję, że wykorzystam te już zdefiniowane (s1,t,i). Zazwyczaj te typy zmiennych są zbyt często widziane w firebugu, jak typy wyliczalne. Poza tym, używając dobrego punktu przerwania i odpowiedniego miejsca, zawsze mogę przekroczyć te wartości w pętli. Zmieniłem swoje skupienie, ponieważ ktoś na stackexchange powiedział mi, abym używał dragonfly (opery), ponieważ mogłem pobrać zmienną i jej wartości za pomocą instrukcji breakpoint. Dla innych wartości po prostu zrobiłem `document.write`, aby uzyskać pożądane rezultaty. Oto link do zrzutu ekranu. połączyć. Bardziej interesowało mnie zrozumienie części kodowania, która faktycznie mówi programowi, aby cofnął znak Unicode na podstawie wartości klucza kodu. Ta część kodu to `s.substr(s.length-1,1)`. Po prostu wyodrębnił ostatni znak, który jest numerem klucza kodu, a następnie użył go do obliczenia pasującej wartości kodu. Jeśli usuniesz ten kod przesunięcia-1 `%264DTDSJQU%2631MBOHVBHF%264E%2633kbwbtdsjqu%2633%264F%261Bbmfsu%2639%2638Ifmmp%2631Xpsme%2638%263%3A%264C%261B%264D0TDS1%261QU%264F 261%3A%261%3A1` dostaniesz `&4DTDSJQU&31MBOHVBHF&4E&33kbwbtdsjqu&33&4F&1Bbmfsu&39&38Ifmmp&31Xpsme&38&3:&4C&1B&4D0TDSJQU&4F&1:&1:B&1: pomogło to w deszyfrowaniu:1:&1:


title: Jak postępować w przypadku podejrzenia błędu w bibliotekach open source?

text: W naszych projektach korzystamy z kilku bibliotek open source. Czasami w niektórych z nich można znaleźć pewne problemy (najprawdopodobniej błędy biblioteki, ale może to być również niewłaściwe użycie z naszej strony, zwłaszcza gdy czasami dokumentacja nie jest dokładnie w 100% kompletna). Ponieważ biblioteki są często dość złożone, debugowanie ich w celu wskazania źródła problemu jest czasami dość trudne. Czy możesz mi pomóc podsumować, jakie są inne opcje i jak dokładnie z nimi postępować? Niedawno natknąłem się na dziwne problemy podczas korzystania z TCMalloc (skalowalnego alokatora pamięci Google) w systemie Windows, więc byłbym bardzo zadowolony z odpowiedzi, które miałyby zastosowanie do tej konkretnej biblioteki, ale bardziej ogólne odpowiedzi są również dobre. 1) Poproś opiekuna/właściciela projektu o pomoc. Jak to zrobić? 2) Zatrudnij kogoś, kto zidentyfikuje i naprawi problem. Jak to zrobić? Jak znaleźć kogoś z odpowiednią wiedzą w konkretnej bibliotece? ... inne opcje?


title: Kroki do zarządzania dużym projektem

text: Rozwój oprogramowania to obszar, w którym równoległe tworzenie w jego najpełniejszej formie jest bardzo trudne do osiągnięcia, chociaż można zbliżyć się do odpowiedniego projektu. Dotyczy to zwłaszcza tworzenia gier. Biorąc to pod uwagę, jeśli projektujesz grę od zera od silnika do frontonu, jakie kroki należy podjąć w tej kolejności? Jak sprawnie zarządzałbyś swoim projektem i zespołem? Pytam, ponieważ kilka osób i ja jestem zainteresowany pracą nad stosunkowo dużym projektem w celach edukacyjnych. Początkowo zamierzaliśmy używać zastrzeżonego silnika, takiego jak Unity, ale ponieważ chcieliśmy dowiedzieć się, jak działa silnik, zaczniemy od dołu. Będę wdzięczny za wszelkie sugestie, które możecie mi przekazać.


title: Jakie rzeczy muszę kupić, aby rozwijać i dystrybuować aplikację do klienta w .Net

text: Po raz pierwszy mam jednego klienta i tworzę dla niego jedną aplikację w c#.net i winforms. Chcę dystrybuować .net framework z moją aplikacją, ponieważ klient może nie mieć go zainstalowanego, więc chcę go przekazać wraz z moją aplikacją, aby podczas instalacji sprawdził, czy framework jest zainstalowany, czy nie i odpowiednio go zainstaluje. Chcę wiedzieć, czy chcę dystrybuować tę aplikację do tego klienta, a także kilku innych klientów w przyszłości, jakie rzeczy lub licencje muszę kupić, takie jak .net framework, visual studio itp. Możesz rozważyć, że mam zamiar zacząć moją małą firmę programistyczną i zamierzam tworzyć więcej takich aplikacji i sprzedawać je różnym klientom.


title: Czego mogę użyć zamiast interfejsów w Ruby (lub innym dynamicznym języku)?

text: Moim celem jest zdefiniowanie kontraktów pomiędzy klasami. Lubię pisać kaczką i wszystko, ale chciałbym również zdefiniować interfejs między różnymi warstwami mojej aplikacji, aby jasno określić, które metody są wywoływane z zewnątrz, a które są metodami dodatkowymi, które nie powinny być używane przez drugą warstwę . Na przykład w Javie mogę zdefiniować interfejs Persistor za pomocą metod takich jak get() i save(), a następnie zdefiniować klasę JdbcPersistor ze wszystkimi metodami, których potrzebuję do utrwalenia w bazie danych. A może inny RestPersistor z innymi metodami oszczędzania na zdalnym reserze. Nie proszę o interfejsy w Ruby, tylko po to, żeby wiedzieć, czy jest jakiś fajny sposób na zachowanie tego rozróżnienia. Lubię Rubiego, ale pracowałem z nim tylko przy małych projektach.


title: Migracja z jednego frameworka PHP do innego

text: Współpracuję z firmą internetową, która zbliża się do punktu, w którym prawdopodobnie będzie musiała ponownie przemyśleć produkt jako V2 - ze względu na przerastanie niektórych fundamentów i zasad V1, które zostały wbudowane praktycznie we wszystko, od modelu danych po interfejsy użytkownika. Z różnych powodów ta ewolucja może obejmować migrację z CakePHP (z którym zbudowano V1) do Symfony lub Zend. Chciałbym poprosić o kilka doświadczonych opinii na temat tego, jak ludzie mogli poradzić sobie z taką zmianą witryny, która ma duży ruch i generuje przychody. Nie chcę otwierać dyskusji na temat zalet i wad różnych frameworków PHP ani dlaczego ta migracja może być potrzebna. Raczej byłbym bardzo zainteresowany, aby dowiedzieć się, czy istnieją praktyczne alternatywy dla zasadniczo budowania V2 od zera obok V1 przez kilka miesięcy – i blokowania cennego czasu na kodowanie na czas tego intensywnego okresu. Przykładem takiej alternatywy może być migracja aplikacji w częściach przez dłuższy czas. Byłbym wdzięczny za wszelkie opinie osób, które mogły zarządzać lub być zaangażowane w takie zmiany. Z góry dziękuję.


title: Czy produkcja produktu potencjalnie nadającego się do wysyłki zmniejsza Twoją elastyczność?

text: Koszt opracowania funkcji w Agile jest bardzo wysoki, ponieważ musi być ona gotowa do wysyłki. Obejmuje: 1. Naprawianie istotnych błędów 2. Pisanie/aktualizowanie i wykonywanie testów 3. Pisanie/aktualizowanie podręcznika użytkownika 4. Dopracowanie projektu interfejsu użytkownika (rozmieszczenie kontrolek, schematy kolorów, itp.) 5. Aktualizowanie dokumentów dla FDA (w naszej organizacji) Gdy koszt jest tak wysoki, jest mniej prawdopodobne, że zmienisz funkcję po jej wdrożeniu. Czy to sprawia, że jesteś mniej zwinny?


title: Zapytanie dotyczące konta programisty Apple Enterprise

text: Mój pracodawca chce kupić konto firmowe, wierząc, że umożliwi nam to tworzenie i dystrybucję aplikacji dla naszych dużych klientów - jednak w Internecie wyraźnie stwierdza, że konto firmowe powinno być używane tylko do dystrybucji aplikacji dla pracowników firmy które są właścicielami konta. Więc moje pytanie brzmi: jeśli chcemy dystrybuować aplikacje wewnętrzne do „Firmy X”, czy powinniśmy poprosić ją o zakup konta Enterprise w celu dystrybucji aplikacji, którą dla nich stworzyliśmy, czy zamiast tego kupujemy konto w ramach naszej organizacji? Z góry dziękuję.


title: Certyfikowany egzamin Scrum Master

text: Właśnie skończyłem dwa dni kursu CSM i jestem bardzo podekscytowany nadchodzącym egzaminem online. Jakie masz doświadczenia z egzaminem? Ile dostałeś? A czy możesz polecić jakąś dobrą próbkę testów online?


title: Dlaczego lubimy używać mnie?

text: > **Possible Duplicate:** > Dlaczego większość z nas używa 'i' jako zmiennej licznika pętli? Może to pytanie wydaje się wyjątkowo głupie, ale zastanawiam się, dlaczego używamy i jako zmiennej w większości przypadków w pętlach for (a nie innej litery). To może być przyczyna historyczna. np. for(int i = 0; i < 10; i++)


title: Wszelkie standardy nazewnictwa zmiennych w pętlach for (zamiast i,j,k)

text: > **Possible Duplicate:** > Dlaczego większość z nas używa 'i' jako zmiennej licznika pętli? Właśnie pisałem zagnieżdżoną pętlę i dotarłem do punktu, w którym używałem l i m jako zmiennych do kontrolowania pętli i zdałem sobie sprawę, że może to być bardzo mylące; Miałem już kilka błędów, kiedy kopiowałem bloki kodu na różne poziomy. Więc pomyślałem, że zamiast używać i,j,k użyję iSomething,iSomethingelse. Więc gdybym miał przejrzeć model 3D Id użyj for(int iMesh=0;iMesh<numMesh;iMesh++) for(int iVertex=0;iVertex<mesh[iMesh].numVertex;iVertex++) lub może użyj nazwy zmiennej Iterowanie nad: for (int iMeshes for (int iVerts Więc zastanawiałem się, czy istnieją jakieś inne standardowe lub powszechnie stosowane praktyki do robienia tego? EDYCJA: Zastanawiam się, czy istnieją jakieś standardy, a nie, czy jest to w porządku, aby to zrobić


title: Praca z klientami, którzy nie wiedzą, czego chcą

text: Niedawno rozpocząłem pracę, w której pracuję na istniejącym systemie. Wymaga poprawek i aktualizacji, a także nowego kodu. Zrobiłem teraz kilka projektów związanych z konserwacją/dodawaniem funkcji, a kilka z nich znacznie różniło się od tego, o co faktycznie prosiłem. Musiałem więc kilkakrotnie zaprogramować element, aby dostać się tam, gdzie chciał żądać. Teraz nie mam nic przeciwko przeprogramowaniu tej funkcji, jeśli trzeba to zrobić. Chciałbym jednak skrócić czas realizacji moich projektów. Wąskim gardłem wydaje się być postrzeganie przez wnioskodawcę tego, co należy zrobić. Czy masz jakieś pomysły na to, co mógłbym zrobić, aby szybciej dowiedzieć się, czego potrzebuje osoba zgłaszająca prośbę?


title: Jakie powinno być podejście, aby zacząć myśleć o programowaniu wielowątkowym?

text: Jestem doświadczonym programistą java. Teraz zacząłem uczyć się wielowątkowości w java. Jestem w stanie zrozumieć większość koncepcji, ale nadal nie jestem w stanie wizualizować aplikacji działających na wątkach. Znam koncepcję, ale gdzieś, jeśli mam problem oświadczenie, nie mogę myśleć ani wizualizować tego w wątkach.Jak powinno wyglądać moje podejście, aby rozpocząć wizualizację aplikacji w wątkach i rozpocząć kodowanie aplikacji w wątkach?


title: Szybko przycinaj i twórz prawidłowe kombinacje danych

text: Naprawdę borykam się z problemem, w którym muszę „przyciąć” dostępne scenariusze do tych, które użytkownik zdefiniował jako prawidłowe. Poniżej znajduje się mały przykład problemu, który próbuję rozwiązać w .Net (C#). Biorąc pod uwagę poziomy / wartości pokazane poniżej, użytkownik może wybrać, że istnieje tylko kilka prawidłowych kombinacji, ale jeśli wyobrazisz sobie, że poziomy poniżej to 30-40 poziomów danych zamiast 5, które pokazałem, możesz zobaczyć mój dylemat. Mogę potrzebować przejść od milionów do miliardów NIEWAŻNYCH kombinacji, aby dostać się do prawidłowych kombinacji. Zdarzają się przypadki, w których wszystkie wartości na poziomie mają zastosowanie, a niektóre, w których obowiązują tylko te kombinacje, które określił użytkownik. Aktualne poziomy / wartości danych: ![tutaj wprowadź opis obrazka](http://i.stack.imgur.com/K7mfs.png) Użytkownicy powiedzieli, że prawidłowe kombinacje to: *Zauważ, że wszystkie z poziomu 4 są prawidłowymi Odbiorcami - > Sony -> 500 -999 -> Detaliczny odbiornik -> Sony -> 1000 - Up -> Detaliczne wyniki oczekiwane z podanych 5 poziomów informacji: Odbiornik -> Sony -> 500-999 -> Open -Box -> Retail Receiver -> Sony -> 500-999 -> Nowy -> Odbiornik detaliczny -> Sony -> 1000-up -> Open-Box -> Odbiornik detaliczny -> Sony -> 1000-up -> Nowy -> Retail Rzeczy, które mam próbowane są wydajne z małymi zestawami, ale gdybym miał mieć wiele poziomów i duże luki w kombinacjach, które nie pozwoliłyby mi przyciąć poprawnych kombinacji, dopóki nie zagłębię się w poziomy, mam poważne problemy z wydajnością. Oczywiście nie rozwiązuję problemu w niewłaściwy sposób. Wszelkie inne poglądy lub sugestie dotyczące rozwiązania problemu byłyby bardzo mile widziane.


title: Jak poradzić sobie z członkiem zespołu, który jest nieodpowiedzialny i nie wykazuje zaangażowania?

text: Zajmuję się obsługą kilkuosobowego zespołu pracującego nad modułem oprogramowania w dużym projekcie. Zgodnie z naszymi szacunkami nasz moduł jest opóźniony o tydzień. Ponieważ nie możemy mieć tego opóźnienia, nasz klient i nasz menedżer dochodzą do decyzji, że musimy pracować przez kilka weekendów (3-4), aby spróbować dokończyć pracę. Wszyscy członkowie zespołu są tego świadomi i rozumieją, a ponieważ to tylko kwestia 3-4 dodatkowych dni, więc postanawiamy pracować w weekendy, aby dotrzymać terminu. Ale jeden z członków zespołu tego nie śledzi. Z ostatnich trzech weekendów ma taki lub inny powód, by nie przychodzić na weekend. W dni powszednie nie ma nawet ochoty na dodatkowe godziny. Osobiście nie dbam o liczbę godzin, które on przepracowuje, o ile on/(każdy) może dokończyć swoją pracę, aby dotrzymać terminu. Proszę dać mi znać, jak poradzić sobie z tą sytuacją?


title: Pythonowa Java. Tak lub nie?

text: Użycie wcięć w Pythonie dla zakresu kodu było początkowo bardzo polemiczne, a teraz jest uważane za jedną z najlepszych funkcji języka, ponieważ pomaga (prawie zmuszając nas) do posiadania spójnego stylu. Cóż, widziałem ten post, w którym ktoś zamieścił kod Java z `; y {}` wyrównany do prawego marginesu, aby wyglądał bardziej pytonowo. int foo() { int suma ; bar()                                     ; for(int i = 0; i < 100; i++) { sum += i ;} return sum ;} Na początku było to bardzo szokujące (właściwie, jeśli kiedykolwiek zobaczę taki kod w Javie w jednym z moich projektów Bałbym się! ) Jest tu jednak coś ciekawego. Czy potrzebujemy tych wszystkich nawiasów klamrowych i średników? Jak wyglądałby kod bez nich? class Osoba int wiek void pozdrawiam( String a ) if( a == "" ) out.println("Witaj nieznajomy") else out.printf("Witaj %s%n", a ) int wiek() zwraca this.age class Main void main() new Person().greet("") Wygląda dobrze, ale w tak małym kawałku kodu trudno to docenić, a ponieważ nie znam za dużo Pythona, nie mogę powiedzieć po patrząc na istniejące biblioteki, czy byłyby czystsze, czy nie. Wziąłem więc pierwszy plik biblioteki o nazwie: jAlarms, który znalazłem i oto wynik: ( **OSTRZEŻENIE**: poniższy obrazek może być niepokojący dla niektórych osób) http://pxe.pastebin.com/eU1R4xsh Oczywiście to nie kompiluje się. Byłaby to wersja kompilacyjna z wyrównaniem do prawej {} i ; http://pxe.pastebin.com/2uijtbYM **Pytanie** Co by się stało, gdybyśmy mogli kodować w ten sposób? Czy sprawiłoby to, że sprawy stałyby się jaśniejsze? Czy to utrudni? Widzę nawiasy klamrowe i średniki jako pomoc dla parsera, a my, ludzie, przyzwyczailiśmy się do nich, ale czy naprawdę ich potrzebujemy? Myślę, że trudno to szczególnie powiedzieć, ponieważ wiele języków głównego nurtu używa nawiasów klamrowych, C, C++, Java, C# JavaScript Zakładając, że kompilator nie miałby bez nich problemów, czy użyłbyś ich? Proszę skomentuj. **UPDATE** Przy okazji przypomniałem sobie o tym języku, który robi coś podobnego dla JavaScriptu.


title: Klon Snapchata: Jak zabezpieczyć wstępnie pobrane powiadomienia, aby nie można ich było otworzyć poza aplikacją?

text: Załóżmy, że tworzę aplikację do klonowania Snapchata na Androida i iOS. Powiedzmy, że dostałem snapchata od Baza. Chcę wstępnie pobrać dźwięk do tego snapchatu. Jednak jako programista chcę zabezpieczyć ten dźwięk przed oglądaniem poza aplikacją. Myślałem o zaszyfrowaniu go za pomocą AES z IV i kluczem, które są generowane z pseudolosowej funkcji, która pobiera unikalny identyfikator użytkownika jako dane wejściowe. Gdyby jednak atakujący dowiedział się, że w ten sposób szyfrujemy nasze pliki i miał dostęp do naszego PRF, z łatwością mógłby go odszyfrować i przechowywać na stałe. Chodzi o to, że nie mam wystarczającego doświadczenia w kryptografii lub programowaniu na Androida, aby stwierdzić, czy to naprawdę problem, czy nie. Atakujący musi się wiele dowiedzieć o naszym szyfrze, aby go złamać, ale może to wszystko zyskać, patrząc na niezaszyfrowane źródło naszej aplikacji. Czy sugerowane przeze mnie podejście jest bezpieczne kryptograficznie? Jakie inne, lepsze lub prostsze podejście mógłbym zastosować, aby rozwiązać ten problem?


title: Pytanie dotyczące trwałości danych Androida

text: Mam aplikację na Androida, w której użytkownicy mają zestawy elementów, a każdy element ma około 10 właściwości. Co robię w tej chwili: * elementy są przechowywane w bazie danych serwera * kiedy użytkownik się loguje, pobieram wszystkie elementy (powiedzmy 37) przez API i umieszczam je w LinkedHashSet< UserItem > (UserItem to POJO z ustawiającymi i pobiera) * następnie otrzymuję 37 elementów z zestawu i umieszczam je w lokalnej bazie danych SQLite * kiedy użytkownik otwiera ekran "Moje elementy" w aplikacji, otrzymuję 37 elementów z lokalnej bazy danych SQLite, o której myślałem, jest to dobra praktyka? Czy mogę obejść krok 3 (przechowywanie elementów w lokalnej bazie danych), ale zamiast tego zachować żywotność tego obiektu LinkedHashSet i pobrać elementy bezpośrednio z tego miejsca. Jeśli mam rację z tą sugestią, jak mam to zrobić? Zadałem podobne pytanie na Stack Overflow, ale powiedziano mi, że powinienem tu przyjść i zapytać.


title: Różnica między gniazdem a portem

text: Czy ktoś mógłby wyjaśnić całkiem jasno różnicę między portem a gniazdem. Wiem, że port służy jako drzwi do sieci dla procesu aplikacji i że proces aplikacji używa połączenia gniazda z podanym numerem portu do obsługi komunikacji sieciowej, ale gdy masz wiele procesów nasłuchujących na jednym numerze portu, znajduję trudno jest zrozumieć różnicę między gniazdem a portem i jak wszystkie one do siebie pasują.


title: Co oznacza treść z przestrzenią nazw i jakie ma zalety?

text: Czytałem ten blog Jamesa Bennetta dotyczący HTML kontra XHTML. Pisze: > Nie potrzebuję treści z przestrzenią nazw; Nie wyświetlam tutaj żadnej złożonej> notacji matematycznej i nie planuję tego, i nie używam SVG do żadnych> obrazów. Jest to więc jedna z zalet XHTML, które wychodzą poza okno. Nie potrzebuję też > narzędzi XML; całe przetwarzanie, które muszę zrobić, może być obsługiwane przez > biblioteki parsujące HTML, takie jak BeautifulSoup. To druga przewaga, która zniknęła. Co rozumie przez „treść w przestrzeni nazw” i jaką korzyść nam to zapewnia?


title: Pomóż mi zrozumieć, jak przesyłać strumieniowo wideo

text: Jestem doświadczonym programistą PHP, który chce zrozumieć dostępne opcje przesyłania strumieniowego wideo. _Co mam_ : system przetwarzania wideo (ten), który może dostarczać dane wyjściowe do różnych serwerów strumieniowych / CDN / HTTP. _Czego chcę_ : możliwość osadzania strumieni w wielu witrynach, z możliwością włączania/wyłączania strumienia na podstawie sesji użytkownika. Jakie są możliwości spełnienia tych wymagań? Zapraszam do szerokiego zakresu lub polecam lekturę, ponieważ mam stosunkowo niską wiedzę na ten temat. Jestem otwarty zarówno na płatne usługi, jak i na niektóre z nich samemu. Niski koszt ma względne znaczenie.


title: Testy permutacyjne dla dużych sekwencji

text: Chciałbym wykonać test permutacji na szczególnie dużym zbiorze danych, tj. około 4 mln wpisów. Zasadniczo muszę uzyskać pewną liczbę losowych permutacji tego zestawu danych. Zwykłym sposobem na to jest tasowanie Fisher-Yates, ale jest to dość mocno ograniczone okresem PRNG. To znaczy do sekwencji nie dłuższej niż około 2080 roku. Czy istnieje rozwiązanie na losowe permutowanie znacznie większych sekwencji? EDYCJA: Oto interesująca powiązana dyskusja na temat algorytmów losowego losowania i tego, jak bardzo są one ograniczone przez RNG.


title: Czy istnieją narzędzia do określania podobieństwa kodu?

text: Nie mówię o narzędziu różnicowym. Naprawdę chcę sprawdzić, czy projekt zawiera kod, który mógł zostać „zrefaktoryzowany” z innego projektu. Prawdopodobnie zmieniono by nazwy funkcji, nazwy zmiennych i inne. Warunki mogą zostać odwrócone itp.


title: Praca jako jedyny programista w firmie niezwiązanej z technologią

text: Pracuję jako back-end developer, front-end developer, administrator systemów, help desk i „facet, który zna komputery” w małej firmie marketingowej liczącej około 15 osób. Zastanawiałem się, czy inni mogliby podzielić się swoimi doświadczeniami, latając solo w firmach, które niekoniecznie są nastawione na branżę technologiczną. Początkowo podjąłem tę pracę, aby przejść od front-end developera/projektanta do pełnoetatowego programisty. To było dobre doświadczenie do pewnego momentu. Zdecydowanie mogę objąć rolę programisty „gwiazdy rocka” - bo szczerze mówiąc, nikt tak naprawdę nie rozumie mojej pracy. Ostatnio wydaje mi się, że jest to bardzo samotna pozycja. Rzadko udaje mi się odbijać pomysły od ludzi, a każdy wygląda na mnie, jakbym miał magiczne moce, które sprawią, że wszystkie komputery będą działać i wylądują nas jako pierwsze w wyszukiwarkach Google. Odczuwałem również silny rozdźwięk między tym, czego chcemy (projekty z dużymi, wielomiesięcznymi harmonogramami rozwoju), a tym, co faktycznie robimy (w kółko kopiujemy i edytujemy nasze witryny). Więc kto jeszcze uważa się za „technika” w firmie, która uważa, że technologia jest trochę magiczna i jak oceniasz swoją sytuację?


title: Lepszy sposób na stworzenie mapy 2D?

text: Mam pomysł na mapę gry i zbadałem kilka do niej. To, co zamierzam zrobić, to mieć mapy 2D, z których GM może wybierać, lub tworzyć własne, używając predefiniowanych obrazów lub obrazów o określonym rozmiarze, które mogą przesłać. Z tego, co widziałem, ludzie używają tablicy dwuwymiarowej, ale to dotyczy płytek. Więc jakie byłoby moje pytanie, czy istnieje lepszy sposób na zrobienie tego dla Hexagon? Niekoniecznie łatwiej, ale lepiej. Coś, co może być używane na dużą skalę, powiedzmy 1000x1000 hex (100x100 px, 50 promień) Edytuj: Znalazłem tę stronę, która wyjaśnia sposób rysowania sześciokątów. Myślę, że mógłbym to zrobić, chyba że ktoś zna lepszą drogę.


title: Czy jest jakiś dobrze znany komercyjny projekt, który jest obecnie open source?

text: Chodzi mi o to, czy istnieją jakieś projekty open source, które rozpoczęły się jako zamknięte źródła i również odniosły sukces komercyjny? Interesuje mnie również każda historia stojąca za ich otwartym pozyskiwaniem.


title: Nowoczesne praktyki dla aplikacji opartych na procedurach składowanych

text: Pracuję w dość dużym i starym rozwiązaniu, które ma wiele punktów wejścia dla różnych rodzajów klientów, z witrynami internetowymi do publicznego dostępu, witrynami internetowymi z dostępem wewnętrznym, niektórymi witrynami internetowymi i usługami internetowymi dla firm partnerskich itp. Wszystkie te aplikacje używają różne (oparte na Microsoft) technologie, takie jak Classic ASP, ASP.NET WebForms, MVC 3, ASMX, DTSX itp. Kod nie ma standardu, a wielu programistów bez doświadczenia w kodzie i biznesie ma własne droga. Centralnym punktem wszystkich aplikacji jest baza danych SQL Server z mnóstwem procedur przechowywanych, które implementują wszystkie reguły biznesowe. Aplikacje są zwykle tylko powłoką bazy danych. Dostęp do danych odbywa się bez frameworka lub ORM (używając czystego ADO.NET, zwykle przepisując wszystko od utworzenia połączenia do iteracji przez czytnik danych na każdej metodzie, funkcji lub cokolwiek innego). Jakie są najnowocześniejsze najlepsze praktyki tworzenia produktywnej warstwy dostępu do danych w oparciu o procedury składowane? Ze względów biznesowych nie możemy przepisać starszych aplikacji (klient nie zapłaci za to, a ilość codziennej pracy jest zbyt duża, aby robić to wewnętrznie). Nie możemy również korzystać z ORM stron trzecich (architekci są temu przeciwni ze „względów bezpieczeństwa”). Tak więc ulepszenia muszą być bardziej podobne do refaktoryzacji.


title: Nowe spostrzeżenia, których mogę się nauczyć z języka Groovy

text: Zdaję sobie sprawę, że dla programisty wywodzącego się ze świata Javy Groovy zawiera wiele nowych pomysłów i fajnych sztuczek. Moja sytuacja jest inna, ponieważ uczę się Groovy'ego wywodzącego się z dynamicznego środowiska, głównie Pythona i Javascript. Kiedy uczę się nowego języka, uważam, że pomaga mi, jeśli wiem wcześniej, które cechy są mniej lub bardziej starymi znajomymi w nowej składni, a które są naprawdę nowe, abym mógł się skoncentrować na tych ostatnich. Chciałabym więc wiedzieć, jakie cechy wyróżniają Groovy wśród języków dynamicznych. Na jakie pomysły i spostrzeżenia programista dobrze obeznany z dynamicznymi językami powinien zwrócić uwagę podczas nauki Groovy?


title: Wykres spalania Scrum i Dokumentów Google

text: Istnieje samouczek dotyczący tworzenia wykresu spalania dla Scrum w aplikacji Dokumenty Google: http://www.scrumology.net/2011/05/03/how-to-create-a-burndown-chart-in-google - docs/ Problem polega jednak na tym, że ma tylko miejsce na aktualizację postępu raz na sprint, ale spalanie ma być aktualizowane z codziennymi postępami, prawda? Jak zmodyfikować ten wykres, aby móc na nim umieścić codzienny postęp? Chodzi mi o to, aby móc wykreślić dwie linie (idealne i rzeczywiste) z danymi, takimi jak (punkty historii 255, prędkość 24): Rzeczywisty dokument Dokumentów Google (do edycji bezpłatnie): https://docs.google.com/spreadsheet/ccc ?key=0AuPWErnOiLTUDElJVzJZaE5EWEZ2S2xCelF6Z2lzaUE ![Dane Sprintu](http://i.stack.imgur.com/3MV6i.png) ![Wykres Sprintu](http://i.stack.imgur.com/WbQGZ.png)


title: Jak zainicjować obiekt, który może być użyty w klauzuli catch?

text: Widziałem ten rodzaj wzorca w kodzie wcześniej: //pseudo kod C# var exInfo = null; //Wiersz A try { var p = SomeProperty; //Linia B exInfo = new ExceptionMessage("Właściwość to " + p); //Linia C } catch(Wyjątek ex) { exInfo.SomeOtherProperty = SomeOtherValue; //Linia D } Zazwyczaj kod jest skonstruowany w ten sposób, ponieważ exInfo musi być widoczne poza klauzulą try. Problem polega na tym, że jeśli w wierszu B wystąpi wyjątek, exInfo będzie miał wartość null w wierszu D. Problem pojawia się, gdy w wierszu B dzieje się coś, co musi nastąpić przed skonstruowaniem exInfo. Ale jeśli ustawię exInfo na nowy obiekt w wierszu A, może dojść do wycieku pamięci w wierszu C (z powodu „nowego” – umieszczenia tam obiektu). Czy istnieje lepszy wzorzec do obsługi tego rodzaju kodu? Czy istnieje nazwa tego rodzaju wzorca inicjalizacji? Przy okazji wiem, że mógłbym sprawdzić exInfo == null przed linią D, ale wydaje się to trochę niezdarne i szukam lepszego podejścia.


title: Rozszerzenia natywne języka skryptowego — unikanie kolizji nazw i zaśmiecania przestrzeni nazw innych osób

text: Opracowałem mały język skryptowy i właśnie zacząłem pisać pierwsze powiązania bibliotek natywnych. To praktycznie pierwszy raz, kiedy piszę rozszerzenie natywne do języka skryptowego, więc natknąłem się na problem koncepcyjny. Chciałbym napisać kod kleju do popularnych bibliotek, aby można je było używać z tego języka, a ze względu na projekt silnika, który napisałem, osiąga się to za pomocą tablicy C `struct`s opisujących nazwę funkcji widoczne przez maszynę wirtualną, wraz ze wskaźnikiem funkcji. Tak więc wiązanie natywne jest tak naprawdę tylko globalną zmienną tablicową i teraz muszę oczywiście nadać jej (najlepiej dobrą) nazwę. **W C idiomatycznym jest umieszczanie własnych funkcji w „przestrzeni nazw” przez dodanie własnego prefiksu do nazw funkcji,** jak w `myscript_parse_source()` lub `myscript_run_bytecode()`. Idealnie nazwa niestandardowa opisuje nazwę biblioteki, której jest częścią. Tu powstaje zamieszanie. Załóżmy, że piszę powiązanie dla `libcURL`. W tym przypadku rozsądne wydaje się nazwanie mojej biblioteki rozszerzeń `curl_myscript_binding` w następujący sposób: MYSCRIPT_API const MyScriptExtFunc curl_myscript_lib[10]; Ale teraz koliduje to z przestrzenią nazw `curl`. (Myślałem nawet o nazwaniu go `curlmyscript_lib`, ale niestety libcURL nie używa wyłącznie prefiksu `curl_` -- publiczne API zawierają makra takie jak `CURLCODE_*` i `CURLOPT_*`, więc zakładam, że zaśmiecałoby to przestrzeń nazw również.) Inną opcją byłoby zadeklarowanie go jako `myscript_curl_lib`, ale jest to dobre tylko tak długo, jak tylko ja jestem jedynym, który pisze powiązania (ponieważ wiem, co robię z moją przestrzenią nazw). Gdy tylko inni kontrybutorzy zaczną dodawać własne natywne wiązania, zaśmiecają teraz przestrzeń nazw `myscript`. (Zrobiłem trochę badań i wydaje się, że na przykład powiązanie Perl cURL podąża za tym wzorcem. Nie jestem pewien, co powinienem o tym myśleć...) Więc jak sugerujesz, abym nazwał moje zmienne? Czy istnieją jakieś ogólne wytyczne, których należy przestrzegać?


title: Jakie są zalety konwertowania pustych ciągów na wartość prawda w porównaniu z fałszem?

text: Podczas konwertowania ciągu na wartość logiczną, jakie są zalety posiadania przez język programowania oceny pustego ciągu jako prawdziwego i jakie są zalety oceny go jako fałszu?


title: Czy powinienem wydać moje wtyczki AGPL?

text: Używam ownCloud - która jest licencją AGPL - i tworzę tylko kilka niestandardowych modułów i motywu, rdzeń nie jest w ogóle dotykany, więc: 1. Czy powinienem zezwolić na pobieranie źródła dla całej aplikacji (owncloud i moje moduły/motyw)? (ponieważ jest oparty na agpl) 2. czy powinienem podać tylko link do pobrania kodu owncloud (kod oryginalny)? 3. Czy nie musisz w ogóle zezwalać na pobieranie (opcjonalnie)? W związku z tym buduję komercyjną aplikację, w której użytkownicy zapłacą za usługę? Proszę o poradę,


title: Co robisz, gdy pracujesz z wieloma językami z różnymi schematami kapitalizacji?

text: Tworzę aplikację internetową przy użyciu Django. Konwencja Pythona dotycząca nazewnictwa zmiennych to smallcase_with_underscores, ale konwencja Javascript to camelCase. Ponadto widziałem, jak wiele osób używa małych liter z myślnikami do identyfikatorów CSS. Czy zasugerowałbyś użycie wszystkich trzech konwencji nazewnictwa tam, gdzie jest to właściwe, czy wybranie jednej i użycie jej, nawet jeśli pozostałe dwie zalecają coś innego? Przełączanie się tam i z powrotem nie jest dużym problemem, ale nadal może być obciążeniem psychicznym.


title: Przechowywać dane czy nie?

text: Chciałbym Cię zapytać o jedną prostą rzecz. Mam klasę A, która coś robi (na przykład coś liczy). Istnieje również jedna klasa B, która obsługuje niektóre parametry tej klasy (klasa A należy do klasy B). Klasa B wywołuje jedną metodę klasy A, która coś robi i zapisuje wartość do bazy danych. Klasa A używa parametrów, które pochodzą z klasy B. Klasa A ma kilka metod tworzenia czystego kodu (myślę, że to dobrze). Ale... Czy można zapisać parametry jako członkowie prywatni? To nie jest konieczne. Nie muszę ich pamiętać po pisaniu do Bazy Danych. Ale jeśli nie mam danych prywatnych, muszę je traktować jako parametry każdej prywatnej metody (podczas przetwarzania). Myślę, że można zapisać te parametry jako członków tej klasy. Czy mam rację? A może powinienem tego unikać, gdy nie jest to konieczne (kiedy nie muszę ich pamiętać)? Kiedy nie mam prywatnych członków, moja publicMethod (wywoływana z klasy B) wygląda mniej więcej tak: void publicMethod(int param1, int param2, int param3, int param4) { privateMethod1(param1, param2, param3, param4); privateMethod2(param1, param2, param3, param4); privateMethod3(param1, param2, param3, param4); } aw metodach prywatnych wywołuję inną metodę prywatną i muszę obsługiwać parametry .... Myślę, że to nie wygląda dobrze ... Czy mam rację? Kiedy mam prywatnych członków, wygląda to tak: void method (int param1, int param2, int param3, int param4) { privateMethod1(); Metoda prywatna2(); metoda prywatna3(); } Chyba lepiej. Ale nie jestem profesjonalistą i nie jestem pewien... (piszę w C++)


title: Co powiesz na użycie klasy DTO jako właściwości w odpowiedniej klasie BO?

text: Czytałem ten wpis na blogu i podobał mi się pomysł użycia klasy DTO dla encji i użycia jej jako właściwości w odpowiedniej klasie obiektu biznesowego, jak na przykład: public class Person : BALBase { public PersonDTO Data { get; ustawić; } Może to również wyeliminować potrzebę używania narzędzia do mapowania, takiego jak AutoMapper (mapowanie między POCO i DTO). Zastanawiam się nad wykorzystaniem tej koncepcji w mojej aplikacji. Moja aplikacja jest warstwowa przy użyciu prostych zestawów bez wywołań usług internetowych/REST/WCF. Jakie mogą być wady korzystania z tej koncepcji?


title: Pisanie modeli w modelach PyroCMS/Codeinighter

text: W `Pyrocmach` znajdują się widoki `Admin` i `User`. Tworzę złożony moduł, w którym mój plik modelu staje się dość duży. Czy powinienem abstrahować logikę w moich plikach modeli, aby być również modelami użytkownika i modelami administratora mojej bazy danych. Obecnie mam duży plik modelu o nazwie `products_m.php` Czy powinienem podzielić go na 2 pliki * products_admin_m.php * products_user_m.php, czy też administrator powinien odziedziczyć model użytkownika (używając PHP). Gdzie **products_admin_m** to rozszerzenie **products_user_m.**


title: C# Design dla połączeń i poleceń SQL

text: Obecnie pracuję nad systemem współpracującym z bazą danych i chciałbym, aby było to zrobione elegancko. Więc mam wyabstrahowane DBConnection do jednej klasy, DBCommands do innej klasy. (DBCommands : DBConnection) Jest też klasa SQLUsage, w której tworzę nowy wątek, który działa w pętli, cały czas sprawdza, czy w BlockingCollection jest jakiś obiekt, którym należy się zająć, czy jest ten wątek go przetwarza, i używa do tego DBConnection i DBCommands. Mam problem z dostępem do DBCommands z SQLUsage, ponieważ obiekt DBCommands jest tworzony w DBConnection (muszę przekazać obiekt MySqlConnection do DBCommands) Czy to dobre rozwiązanie? Lub powinienem zmienić projekt, chciałbym użyć tych klas również w innej aplikacji (część tego samego, większego systemu). Opowiem ci trochę więcej o tej aplikacji. Jest to aplikacja serwerowa, która obsługuje połączenia od wielu klientów. Każdy klient wysyła do serwera pewne informacje, które są przechowywane w `BlockingCollection<thatinfo>`. Inny wątek używa elementów z `BlockingCollection<thatinfo>` do komunikacji z serwerem mysql i wstawiania do niego danych, zgodnie z `objects<thatinfo>`. I mam problem z projektowaniem. Do tej pory mam główną klasę, klasę do obsługi połączeń TCP/IP, klasę `thatinfo`, klasę SQLUsage, DBConnection i DBCommands. Ponieważ BlockingCollection jest inicjowany w klasie głównej i jest przekazywany zarówno do klasy obsługi TCP/IP, jak i klasy obsługi SQL, nie stanowi to problemu. Moim problemem jest prawidłowe zaprojektowanie klas SQLHandling. Chcę, żeby było to zrobione elegancko. Pomyślałem więc, że dobrze byłoby wyabstrahować połączenie i polecenia z klasy, w której przetwarzam informacje. Więc mam już działającą klasę SQLConnection, miałem w niej też kilka poleceń i zadziałało. Ale następnym krokiem było streszczenie poleceń w innej klasie, ponieważ będzie wiele przeciążonych metod (np. Insert z 1 arg, Insert z 2 args itp.) Więc moje pytanie nie dotyczy kodu, wiem jak go stworzyć, tylko więcej o projektowaniu. Czy abstrahowanie poleceń sql w innej klasie było dobrym pomysłem, czy nie? Czy zarówno DBConnection, jak i DBCommands powinny dziedziczyć z klasy SQLHandling? czy tylko DBConnection : DBCommands ? I kolejne pytanie, prawdopodobnie łatwiejsze do odpowiedzi, czy istnieje bardziej elegancki sposób wykonywania poleceń sql niż tylko przeciążanie metod? Jak 1 uniwersalna metoda INSERT, która obsługuje wszystkie argumenty? Na razie posiadanie kilku przeładowanych metod wstawiania wydaje się być dobrym pomysłem, ponieważ w tej aplikacji, nad którą pracuję, będą tylko 2 różne rodzaje insertów (tylko różna ilość argumentów), ale w innej aplikacji chciałem używać tych samych klas Naprawdę przydałaby mi się uniwersalna metoda Insert.


title: Jak oferować usługi kontraktowe w zakresie programowania/bazy danych?

text: Jeżeli jesteś niezależnym konsultantem/wykonawcą pracującym dla wielu klientów, jak sprzedajesz swoje usługi? Czy uważasz, że aplikowanie na oferty pracy na stałe stanowiska i oferowanie swoich usług menedżerowi ds. rekrutacji to dobra strategia? Moim zdaniem wykonawca to świetny pomysł, aby sprawdzić, czy naprawdę potrzebujesz pracownika na pełen etat, i pomyślałem, że gdybym mógł wyjaśnić to menedżerom, byliby otwarci. Co myślisz?


title: Jak sprawić, by było oczywiste, że funkcja jest dostępna z zewnątrz?

text: To jest pytanie specyficzne dla C. Staram się trzymać wszystko, co możliwe, w granicach jednostek tłumaczeniowych, ujawniając tylko kilka funkcji poprzez plik `.h`. Oznacza to, że nadaję połączenie statyczne z obiektami na poziomie plików. Teraz kilka funkcji musi być wywoływanych przez inne moduły, ale nie bezpośrednio. Mój moduł/plik/jednostka tłumaczeń subskrybuje inne moduły, przekazując wskaźnik do funkcji. Następnie, po określonym zdarzeniu, wywoływany jest wskaźnik z pewnymi argumentami. Zastanawiam się więc, jak sprawić, aby te funkcje były wywoływane z jakiegoś niejasnego miejsca. * Czy powinny być `statyczne` czy `extern` (i wystawiać je w `.h`) ? * Czy powinienem dołączyć podpowiedź w nazwie funkcji? * Czy wystarczy wstawić komentarz „wywoływany przez X”?


title: Blokady nierekurencyjne czy rekurencyjne?

text: Zastanawiam się nad użyciem zamków nierekurencyjnych; Odkryłem, że mają przewagę wydajności nad standardowymi blokadami rekurencyjnymi (np. SimpleRWSync). Używałem głównie sekcji krytycznych, ale w środowiskach o dużej liczbie wątków blokowanie powodowało znaczne opóźnienia. 1. Jakie są korzyści i/lub pułapki? 2. Czy te nierekurencyjne sprawiają, że kodowanie jest stosunkowo trudniejsze?


title: Powielanie kodu w projekcie wielomodułowym

text: Mam około siedmiu modułów ułożonych w następujący sposób: * Usługa * Przetwarzanie * Wspólny * Konto * E-mail * Planowanie Staram się, aby moją zasadą było ograniczenie kodu do modułu, który faktycznie go używa. Kod, który jest współdzielony przez wiele projektów (3+) jest wysyłany do wspólnego. Istnieje jednak kilka klas, z których korzystają tylko dwa projekty. W moim najnowszym przykładzie zarówno Konto, jak i Przetwarzanie wymagają wykonania pewnego przetwarzania obrazu. Czy to zapach kodu, w którym dwa mają te same klasy znalezione w dwóch modułach? Czy powinienem przenieść zduplikowany kod do wspólnego, gdy zostanie użyty więcej niż raz?


title: Jak znaleźć błędy związane z niezadeklarowanymi zmiennymi w php?

text: Jeśli skopiuję fragment kodu, który wygląda tak $blah = array(1,2,3,4); foreach ($blah jako $i) echo ($i); i zmień nazwy zmiennych, ale zapomnij zrobić to poprawnie, tak jak $apple = array(1,2,3,4); foreach ($blah jako $i) <--- zwróć uwagę na $blah zamiast $apple echo ($i); Wtedy moje NetBeans IDE nie narzeka i otrzymuję błąd w czasie wykonywania, kiedy to uruchamiam. Czy istnieje sposób na wyłapanie takich błędów bez uruchamiania kodu? Które IDE to robi? Która wtyczka? A może cały świat programowania PHP żyje bez tego?


title: Używanie komunikatów zatwierdzenia do śledzenia czasu

text: Niektóre produkty mogą analizować specjalną składnię w komunikatach o zatwierdzeniu, aby wyodrębnić dodatkowe dane, takie jak informacje o śledzeniu w czasie: https://confluence.atlassian.com/display/FISHEYE/Using+smart+commits Wydaje mi się, że jest to niewłaściwe użycie narzędzie do aktywacji funkcji na innym, ale mam problem z wyartykułowaniem mojego rozumowania. Wydaje się podobny do zapachu procesu przechowywania informacji o śledzeniu problemów w komentarzach do kodu. Czy jest coś fundamentalnie złego w używaniu komunikatów commit jako mechanizmu śledzenia czasu?


title: Jak korzystać z API?

text: ### Tło Nie mam pojęcia jak korzystać z API. Wiem, że wszystkie interfejsy API są różne, ale prowadziłem badania i nie rozumiem w pełni dokumentacji, która jest z nimi związana. Za półtora miesiąca na mojej uczelni odbywa się konkurs programistyczny, w którym chcę wziąć udział (obraca się wokół API), ale nikt z mojego zespołu nigdy z nich nie korzystał. Jesteśmy specjalistami w dziedzinie informatyki, więc mamy doświadczenie w programowaniu, ale nigdy nie mieliśmy do czynienia z interfejsem API. Próbowałem zajrzeć do dokumentacji Twittera, ale się zgubiłem. Czy ktoś mógłby mi udzielić kilku wskazówek, jak zacząć? Może _bardzo_ łatwe API z przykładami lub wyjaśnienie podstawowych rzeczy na temat wspólnych elementów różnych API? Nie potrzebuję pełnego samouczka na temat przepełnienia stosu; Po prostu trzeba mi wskazać właściwy kierunek. ### Aktualizacja Języki programowania, którymi posługuję się najbardziej to C (zwykle prosty edytor tekstu) i Java (Eclipse). Próbując być bardziej konkretnym w moim pytaniu: rozumiem, że API (i tak, biblioteki zewnętrzne są tym, o czym mówiłem) to po prostu zestawy funkcji. ### Pytanie Domyślam się, że chcę zapytać, jak bym sobie poradził z dostępem do tych funkcji. Czy muszę pobierać określone pliki i umieszczać je w swoich programach, czy też muszę mieć do nich dostęp zdalny itp.?


title: Jeśli biblioteka nie zaspokaja wszystkich moich potrzeb, jak mam postępować?

text: Zajmuję się tworzeniem aplikacji obejmującej modele matematyczne i fizyczne, i chciałbym używać biblioteki matematycznej do takich rzeczy jak macierze. Używam C#, więc szukałem bibliotek i znalazłem Math.NET. Z poprzednich doświadczeń mam wrażenie, że w matematyce korzystanie z solidnej i zatwierdzonej przez branżę biblioteki innej firmy jest znacznie lepsze niż pisanie własnego kodu. Wydaje się dobry do wielu celów, ale nie zapewnia wsparcia dla Quaternions, których muszę użyć jako typu. Ponadto potrzebuję niektórych funkcji w Vector i Matrix, które również nie są dostępne, takich jak macierze rotacji i funkcje rotacji wektorowej oraz obliczanie iloczynów krzyżowych. Jednocześnie zapewnia wiele funkcji/klas, których po prostu nie potrzebuję, co może oznaczać wiele niepotrzebnego rozdęcia i złożoności. Czy w takim tempie powinienem w ogóle zawracać sobie głowę korzystaniem z biblioteki? Czy powinienem napisać własną bibliotekę matematyczną? A może lepszym pomysłem jest trzymać się zewnętrznej biblioteki i jakoś ją otaczać? Może powinienem utworzyć podklasę biblioteki typu Matrix i Vector? Ale czy nie jest to uważane za zły styl? Próbowałem też szukać innych bibliotek, ale niestety nie mogłem znaleźć niczego odpowiedniego.


title: Przechowuj wyniki dla graczy i twórz listę najlepszych wyników

text: To pytanie pochodzi z pytania z rozmowy kwalifikacyjnej, które otrzymałem za pracę, której odmówiono. Poprosiłem o przegląd kodu dla mojego rozwiązania na dedykowanej stronie Stack Exchange (http://codereview.stackexchange.com/q/51842/43237). Ale mam nadzieję, że to pytanie jest wystarczająco przeformułowane i zadane z inną motywacją, aby nie było duplikatem drugiego pytania. Rozważ następujący scenariusz: Powinieneś przechowywać wyniki graczy na serwerze zaplecza gry. Serwer jest napisany w Javie. Każdy wynik powinien być zarejestrowany, co oznacza, że jeden gracz może mieć dowolną liczbę wyników dla dowolnej liczby poziomów. Lista najlepszych wyników powinna zawierać piętnaście najlepszych wyników na danym poziomie, ale tylko jeden wynik na użytkownika (tak, że nawet jeśli gracz X ma dwa najwyższe wyniki na poziomie Y, liczy się tylko pierwsza pozycja, a gracz Z zajmuje drugie miejsce). Żadne informacje nie powinny być utrwalane i należy używać tylko standardowych bibliotek Java 1.7+. Żadne biblioteki ani frameworki innych firm nie są akceptowane. Biorąc pod uwagę liczbę graczy jako główny czynnik, jaka byłaby najlepsza struktura danych pod względem skalowalności i współbieżności? Jak uzyskasz dostęp do struktury, aby zarejestrować pojedynczy wynik na podstawie poziomu i identyfikatora gracza? Jak możesz uzyskać dostęp do struktury, aby skompilować listę najlepszych wyników?


title: Czy można nauczyć się algorytmu z projektu open source, a następnie wdrożyć go w projekcie o zamkniętym kodzie źródłowym?

text: Odsyłacz Wpis, od którego wszystko się zaczęło Aby wyjaśnić pierwotne pytanie, które zadałem w prowokacyjny sposób, zadałem to pytanie. Jeśli nauczysz się algorytmu z projektu open source, czy możesz użyć tego algorytmu w oddzielnym projekcie o zamkniętym źródle? A jeśli nie, to czy oznacza to, że nie możesz już nigdy użyć tej wiedzy? Jeśli możesz go użyć, jaka to może być okoliczność? Gwoli wyjaśnienia, nie staram się omijać licencji, inaczej nie zadałbym tego pytania w pierwszej kolejności.


title: Przestarzałe a oczerniane w JavaDoc?

text: W JavaDoc dla `X509Certificate` `getSubjectDN()` stwierdza się: > **Denigrated** , zastąpione przez getSubjectX500Principal(). Jestem przyzwyczajony do widoku Deprecated w metodach for, które nie powinny być dłużej używane, ale nie są oczerniane. Znalazłem raport o błędzie w tym konkretnym przypadku, który został zamknięty z komentarzem: > To nie jest błąd. „Przestarzałe” ma być używane tylko w poważnych przypadkach. Kiedy używamy metody, która jest _Deprecated_ , ogólnie sugerowaną akcją jest zaprzestanie korzystania z tej metody. Jaka jest więc sugerowana akcja, gdy metoda jest oznaczona jako _Oczerniana_?


title: Czy praca wyłącznie z niszowymi aplikacjami lub technologią może zaszkodzić Twojej karierze w tworzeniu oprogramowania? Jak wyjść z cyklu?

text: Odnajduję się w zalewie. Pracuję w całkiem wygodnej grupie IT od prawie dekady. Zacząłem tutaj, pracując nad tworzeniem stron internetowych, głównie CRUD, ale wykazałem się umiejętnością rozwiązywania bardziej złożonych problemów. Nie jestem gwiazdą rocka, ale otrzymałem wiele komplementów na temat moich umiejętności programistycznych, a technologowie i architekci skomentowali moją zdolność do chwytania rzeczy (na przykład niedawno nauczyłem się bardzo popularnego frameworka internetowego, który pozostanie bez nazwy odkąd nie chcę być zidentyfikowany). Mój problem polega na tym, że z biegiem czasu moje obowiązki przesuwały się w kierunku pracy, takiej jak wsparcie lub „rozwój” z niektórymi raczej niszowymi produktami (boję się tu wspomnieć ze względu na potencjał do zidentyfikowania). Część tej pracy, jeśli zawiera coś przypominającego kodowanie, to bardzo służebne skrypty w językach takich jak Powershell lub VBScript. Jednak przez większość czasu typowy dzień polega na korzystaniu z pomocy dostawcy produktu w celu wysłania im dzienników i zastosowania zalecanych przez nich zmian konfiguracji lub poprawek. Zasadniczo jestem głodny prawdziwego rozwoju oprogramowania. Jednak pomimo tego, że jestem bardziej niż zdolny do wykonywania tej pracy programistycznej (i faktycznie robię w niej znacznie lepszą pracę niż cokolwiek innego), nasza szefowa jest bardziej zainteresowana rodzajem pracy, o której wspomniałem powyżej, jej rozumowanie jest takie, że ponieważ nie ktoś inny w organizacji chce to zrobić, musi to oznaczać bezpieczeństwo pracy. Trwa to prawie 3 lata, a jedynym powodem, dla którego się trzymam, jest obietnica, że w końcu otrzymamy przydzielone nam kolejne projekty rozwojowe. Cóż, okazało się, że to nieprawda. Niedawna rozmowa z szefową właśnie wyjaśniła to wyraźniej, ponieważ powiedziała mi bez żadnych wątpliwości, że jest bardzo prawdopodobne, że prace programistyczne (w sieci lub w inny sposób) trafią do innej grupy. Podano mi powód, dla którego nie mamy wystarczających zasobów w naszej grupie, aby sobie z tym poradzić. Więc teraz znajduję się w sytuacji, w której albo muszę pozostać w tym, co zasadniczo stało się ślepą uliczką pracy w IT, która jest związana z fortuną niszowego stosu aplikacji, albo spróbować znaleźć stanowisko, które będzie lepsze przez długi czas kariera termin. Mój problem (czy to jest problem?) polega jednak na tym, że w porównaniu z innymi moje projekty rozwojowe w ciągu ostatnich trzech lat są bardzo rzadkie. Podsumowując, projekty korzystające z najnowszych i najpopularniejszych frameworków stanowią ogromną liczbę tylko jednego — bez pracy tego rodzaju w przewidywalnej przyszłości. Jestem bardzo zaniepokojony, że ta skąpość w moim CV jest deficytem i że zmniejszy moje szanse na znalezienie innej pracy. Zastanawiam się też, jak bardzo mnie to zaboli i czy można to złagodzić własnymi projektami hobbystycznymi. Chyba szukam opinii. Bardzo dziękuję za przeczytanie.


title: Czy mogę zrobić dobrą karierę z programowaniem VC++?

text: Jestem uzależniony od VC++ od 2008 roku, a pracę w mojej obecnej firmie zacząłem od 2011 roku, kiedy ukończyłem studia matematyczne. Teraz nadal kocham VC++, to wspaniały język programowania. Jestem trochę zdezorientowany, czy to dobry pomysł, aby kontynuować programowanie Windows. Jestem w Pekinie w Chinach. Oczywiście pochodzę z Chin. W przyszłości chcę znaleźć pracę w Dolinie Krzemowej w Ameryce. Czy ktoś może mi powiedzieć, czy w przyszłości mogę znaleźć pracę VC++ w Dolinie Krzemowej? A co powinienem zrobić w ostatnich latach?


title: Dziwne zmiany UIView w iPhonie Retina

text: Mam problem, którego nie rozumiem. Zajmuję się tworzeniem aplikacji OpenGL na iOS. Ponieważ w niektórych momentach chcę programowo wymusić orientację widoku, a Apple z jakiegoś powodu nie ułatwia tego (a nawet nie umożliwia), robię to ręcznie. Zawsze zwracam NO w `shouldAutoRotateToInterfaceOrientation`, a kiedy chcę zmienić orientację (na przykład na pionową), robię coś takiego w UIView: [self setTransform:CGAffineTransformMake(1, 0, 0, 1, 0, 0)]; [self setBounds:CGRectMake(0, 0, 768, 1024)]; To działa dobrze. Aby obsługiwać urządzenia Retina, zacząłem sprawdzać `[UIScreen mainScreen].scale` i odpowiednio ustawiać `self.contentScaleFactor`. Zmodyfikowałem również powyższy kod, aby uwzględnić nowe wymiary, na przykład: [self setTransform:CGAffineTransformMake(1, 0, 0, 1, 0, 0)]; [self setBounds:CGRectMake(0, 0, 2*768, 2*1024)]; Ta sama rotacja, inny rozmiar. Dziwny wynik jest taki, że otrzymuję "ekran" o odpowiednim rozmiarze, ale przesunięty o pół ekranu w dół i w lewo. Aby to poprawić, muszę wykonać następujące czynności: [self setTransform:CGAffineTransformMake(1, 0, 0, 1, 0, 0)]; [self setBounds:CGRectMake(-768, -1024, 2*768 - 768, 2*1024 - 1024)]; To działa, ale jest brzydkie, muszę też wprowadzać podobne poprawki, gdy otrzymuję współrzędne dotyku, a co najgorsze, nie rozumiem, co się dzieje i dlaczego powyższa „poprawka” działa. Czy ktoś może rzucić nieco światła na ten problem?


title: wybór projektu dla biblioteki algebry liniowej OO

text: Piszę bibliotekę do rzadkich obliczeń algebry liniowej jako zaplecze dla mojej pracy dyplomowej i doszedłem do pewnego rozdroża. Używam nowoczesnego Fortrana (nie jęcz, ma dziedziczenie, polimorfizm i cały ten jazz od 10 lat). Z punktu widzenia projektowania oprogramowania moim głównym problemem było sprawienie, aby solwery iteracyjne były w stanie używać rzadkich macierzy bez znajomości formatu przechowywania. Jedyną funkcjonalnością, o której musi wiedzieć solwer iteracyjny, jest pomnożenie macierzy przez wektor. Zrobiłem to, mając klasę abstrakcyjną `sparse_matrix` z wirtualną metodą `matvec` do mnożenia macierzy-wektora; potem było kilka klas potomnych, reprezentujących każdy format przechowywania, które nadpisują macierzysty matvec własną implementacją. Wierzę, że nazywa się to wzorem „szablonu”, tak? Rozważam refaktoryzację mojego kodu, aby używać kompozycji zamiast dziedziczenia. W tym celu rzadka macierz składa się z podstawowego wykresu z dodatkowymi danymi -- czasami jest to tablica liczb rzeczywistych lub zespolonych, czasem tablica gęstych macierzy itp. Istnieje wiele różnych formatów rzadkich macierzy, które wykorzystują ten sam podstawowy wykres schemat przechowywania. Każda rzadka macierz ma jako atrybut obiekt `graph` i ma kolekcję wskaźników do funkcji, które zmieniają się, aby używać tego wykresu na różne sposoby. Wcześniej musiałem skutecznie przedefiniować ten sam schemat przechowywania wykresów dla każdego formatu macierzy rzadkiej, który go używał. Zalety, które dostrzegam to: 1. mniej klas ułatwia podpięcie mojego kodu do C/C++/Pythona 2. łatwość wyboru różnych równoległych implementacji tego samego algorytmu; napisz każdą implementację i przekieruj wskaźniki funkcji w czasie wykonywania. Wcześniej musiałem używać dużych bloków warunkowych. 3. Myślę, że ten projekt będzie łatwiejszy, gdy bazowy wykres będzie lepiej traktowany jako hipergraf, a macierze jako niejednorodne kompozycje kilku macierzy w możliwie różnych formatach. (Zdarza się to w niektórych aplikacjach PDE.) Czy ktoś może wymyślić dobry powód, dla którego powinienem trzymać się starego projektu opartego na dziedziczeniu? Jeśli nowe podejście jest bardziej sensowne, mile widziane będą wszelkie porady wykraczające poza to, co zostało powiedziane w GoF.


title: OOD: Wszystkie klasy na dole hierarchii zawierają to samo pole

text: Tworzę diagram klas dla tego, co uważałem za dość prosty problem. Kiedy jednak dotrę na sam dół hierarchii, wszystkie klasy zawierają tylko jedno pole i jest ono tym samym. To dla mnie wygląda bardzo źle, ale to pole nie należy do żadnej z klas nadrzędnych. Zastanawiałem się, czy są jakieś sugerowane wzorce projektowe w takiej sytuacji? Poniżej znajduje się uproszczona wersja diagramu klas. _Uwaga, pola nazwane inaczej nie mogą należeć do żadnej innej klasy_ +------------------+ | Mapowanie notatek | |------------------| | Ciąg notatkiId | | Treść ciągu | | | +---------+--------+ | +---------------+-----+ | | +--------|--------+ +--------|--------+ | Notatka użytkownika | | Notatka administratora | |-----------------| |-----------------| | Ciąg identyfikator użytkownika | | Identyfikator administratora ciągu | | | | | +--------+--------+ +--------+------------+ | | | | +--------|--------+ +--------|--------+ | Notatka użytkownika | | AdminBookNote | |-----------------| |-----------------| | Identyfikator książki ciąg znaków | | Identyfikator książki ciąg znaków | | | | | +-----------------+ +-----------------+ _Tabele ASCII narysowane za pomocą http://www.asciiflow.com /_ ### Edycja Dodałem kilka nazw klas i pól do powyższego diagramu klas. Powodem, dla którego `bookId` nie może istnieć w żadnej z klas nadrzędnych, jest to, że służy do tworzenia relacji `OneToOne` z inną klasą — co nie jest czymś, co zawsze chcemy robić.


title: Dlaczego zawsze myślę, że wiem o wiele mniej niż inni?

text: Zajmuję się programowaniem od szkoły podstawowej 6. Od czasu, gdy nadszedł DOS, programowałem w quickbasic 4.5, następnie w VB 6, a następnie w C#. W międzyczasie zajmuję się również programowaniem w C++. Ale za każdym razem, gdy otwieram Stack Overflow i próbuję pomóc innym w rozwiązywaniu ich problemów, wydaje się, że nic nie wiem. Czuję, że jestem taka głupia, mimo że od tak dawna programuję. Zszokowałbym czytając wszystkie pytania i nie mogąc znaleźć żadnej wskazówki. Czy technologia porusza się zbyt szybko, co mnie pominęło? Czuję, że technologia zmienia się zbyt szybko i nie nadążam, gdy znam formularz webowy ASP.NET, MVC odpada, gdy znam MVC, popularna jest aplikacja android/iphone/HTML5. Wygląda na to, że gonię za czymś i nigdy „tego” nie dochodzę. Nie wiem, czy to jest właściwe miejsce, żebym o tym mówił. Chciałbym tylko posłuchać opinii takich jak ty, jak myślisz, w jaki sposób technologia powinna się rozwijać, zamiast odtwarzać język, dodając tu i tam błąd, aby programista mógł to rozgryźć, podczas gdy duża firma dzieli się między sobą rozwiązaniem. Dokładnie tak się czuję. Prosty przykład to jak myślisz, dlaczego `Słownik<>` w .NET nie zapewnia iteracji obiektu przy użyciu indeksu? Dlaczego musimy użyć Key lub GetEnumerator(). Programista musi wygooglować i przeczytać zmarnowaną godzinę, aby znaleźć fragmenty kodu hakerskiego, aby użyć odbicia w celu uzyskania odczytu z indeksu. Tam, gdzie programista zachowa go jako kolekcję i wartościowy kod. Jednak gdy nadejdą czasy, wszystko się zmieni, programista musi ponownie znaleźć odpowiedź na nowe, głupie problemy! Tak, naprawdę tego nienawidzę! Nienawidzę, jak wiele dużych firm bawi się z deweloperem, dzieląc duży obraz na małą układankę, psując go i prosząc dewelopera o samodzielne ułożenie go. Jakby stwarzali nam problemy do rozwiązania, więc nie jesteśmy w stanie dorosnąć z góry, jesteśmy manipulowani przez te głupie problemy, które stworzyli. Inna próbka pokazuje, jak trudno jest zbierać pliki cookie z CookieContainer bez przekazywania adresu URL, tak bez adresu URL i CHCĘ uzyskać wszystkie pliki cookie w kontenerze cookie bez znajomości adresu URL, chcę powtórzyć wszystkie. Dlaczego micros0ft musi mnie od tego ograniczać?


title: Wydajny sposób sprawdzania zmian w zawartości folderów

text: Tworzę aplikację, która utrzymuje bazę danych plików określonego typu w danym folderze (i wszystkich podfolderach). Początkowo program będzie rekursywał foldery i doda do bazy każdy znaleziony plik tego typu. Chcę, aby aplikacja miała możliwość ponownego skanowania folderu i dodawania plików, których nie było tam podczas ostatniego skanowania folderów. Nie może użyć właściwości pliku daty utworzenia, ponieważ istnieje duże prawdopodobieństwo, że plik zostanie dodany do folderów, który nie jest nowym plikiem. Zastanawiam się, jaki jest najskuteczniejszy sposób na zrobienie tego i czy istnieje sposób, który nie wymaga sprawdzania, czy każdy plik jest już w bazie danych (co, jeśli jest 5000 plików, oznaczałoby 5000 zapytań z listy 5000 pozycji w rozmiar lub 25 milionów "sprawdzeń" dla silnika sql do wykonania) Przypuszczam, że bardziej szczegółowe pytanie, aby osiągnąć ten sam cel, brzmiałoby - czy istnieje właściwość pliku (w Microsoft Windows), która niezawodnie powie ci, kiedy ten plik zostanie dostarczony w tym folderze. **Edytuj:** aplikacja nie działałaby przez cały czas, więc monitorowanie folderu pod kątem zdarzeń zmian nie wchodzi w grę. Może to być typowy scenariusz. Uruchom aplikację. pobierz nowe pliki. zamknij aplikację. Tydzień później (po normalnym użyciu komputera i dodaniu plików do folderu) uruchom aplikację ponownie, poszukaj zmian od ostatniego użycia aplikacji.


title: Wiele interfejsów API, czy jeden interfejs API z parametrem „chooser”?

text: Załóżmy, że masz usługę sieci Web, która dodaje logikę biznesową do źródła danych. To, jak wygląda każdy interfejs API tej usługi, to - biorąc pod uwagę zestaw ograniczeń, podaj mi elementy ze źródła danych, które spełniają te ograniczenia. Możesz powiedzieć, że otrzymujesz „widok” źródła danych z powrotem z interfejsu API. Teraz z czasem pojawia się prośba o zwrócenie różnych rodzajów widoków źródła danych. Masz możliwość dodania nowych interfejsów API dla każdego „wystarczająco odrębnego” widoku lub przełączenia biegów i udostępnienia interfejsu API getFooDataView(), który przyjmuje parametr określający rodzaj widoku, który chcesz. Istnieje kilka konkurujących ze sobą presji, aby zdecydować, którą drogą iść: * Istniejący duży klient Twojej usługi wolałby być leniwy i nie musieć kodować do nowych interfejsów API, gdy potrzebne są nowe widoki danych. * Ale niektóre parametry żądania (ograniczenia) mają sens tylko dla niektórych widoków, a nie dla innych - musiałbyś rozluźnić kontrakt API, mówiąc "dobrze, jeśli chcesz widok XYZ, ustawienie parametru "foo" nie mają żadnego efektu”, z niefortunnym efektem ubocznym, że nie możesz ustawić „foo” jako wymaganego parametru, nawet jeśli tak jest w przypadku niektórych widoków. * Coraz częściej nowi klienci chcą korzystać z Twoich usług. Nie możesz zdecydować, co byłoby dla nich bardziej mylące — konieczność wybierania między różnymi, ale ściślej zdefiniowanymi interfejsami API i jednym interfejsem API, w którym muszą wiedzieć, jaka kombinacja parametrów naprawdę daje im to, czego chcą. Aby to wydestylować, kiedy narysujesz linię, że coś powinno być własnym API, a nie odmianą istniejącego API? Różne osoby, z którymi musisz pracować, mają różne poglądy na temat tego, co sprawia, że dwa żądania klientów są semantycznie różne, więc może być trudno osiągnąć konsensus w tej sprawie. Chcesz również upewnić się, że Twoja usługa nie będzie zbyt trudna do konsumpcji dla przyszłych klientów. Jakie są najlepsze praktyki dotyczące dokonywania tego rodzaju wyboru?


title: Kopiowanie i sprzedawanie licencjonowanego oprogramowania Apache?

text: **Pytania pogrubione:** Przeczytałem licencję Apache Software License 2.0... Rozumiem, że podczas redystrybucji licencjonowanego oprogramowania wystarczy podać swoje imię i nazwisko we wszystkich modyfikowanych częściach (jeśli dowolna), dołącz jakieś uwagi i tak dalej, a odejdziesz. Nie musisz nawet podążać za licencją we wszystkich swoich dodatkach/edycjach, ponieważ możesz udzielać sublicencji. Rzecz, której tak naprawdę nie rozumiem, to **dlaczego ktokolwiek miałby chcieć używać tego rodzaju licencji**, szczerze? Czy czegoś mi brakuje? Jeszcze jedno, **czy #włączenie (lub podobne) licencjonowanej biblioteki oznacza, że tworzysz pochodną licencjonowanego źródła** , co wiąże Cię z warunkami licencji?


title: Użyć niestandardowego obiektu wartości lub identyfikatora Guid jako identyfikatora jednostki w systemie rozproszonym?

text: ## tl;dr Powiedziano mi, że w projektowaniu opartym na domenie identyfikatorem jednostki może być niestandardowy obiekt wartości, tj. coś innego niż `Guid`, `string`, `int` itd. Czy to naprawdę być wskazane w systemie rozproszonym? ## Długa wersja Wymyślę sytuację analogiczną do tej, z którą mam obecnie do czynienia. Powiedzmy, że mam rozproszony system, w którym centralną koncepcją jest jajko. System pozwala zamawiać jajka i przeglądać raporty wydatków oraz dane dotyczące zapasów, takie jak ilość w kasie, zużycie, wycena i co masz. Istnieje wiele usług wspierających te zachowania. I powiedzmy, że istnieje również inna aplikacja, która pozwala komponować przepisy, które odnoszą się do określonego rodzaju jajka. Teraz typ jaja jest podzielony na gatunki — struś, gęś, kaczka, kurczak, przepiórka. To jest w porządku i elegancko, ponieważ oznacza to, że użytkownicy nie kończą z jajami strusia, gdy chcą jaj przepiórczych i tak dalej. Jednak otrzymywaliśmy skargi, ponieważ jaja kurze jumbo nie są nawet zbliżone do małych. Cena jest inna i tak naprawdę nie można ich zastąpić w przepisach. I tutaj pomyśleliśmy, że wyświadczamy użytkownikom przysługę, nie przytłaczając ich zbyt wieloma opcjami. Obecnie każda z usług (np. „OrderSubmitter”, „EggTypeDefiner”, „SpendingReportsGenerator”, „InventoryTracker”, „RecipeCreator”, „RecipeTracker” lub cokolwiek innego) identyfikuje typy jaj za pomocą standardowych w branży liczb całkowitych reprezentujących gatunek (przyjrzyjmy się nazwijmy to `speciesCode`). Zdajemy sobie sprawę, że popełniliśmy błąd, ponieważ ta zmiana może wpłynąć na każdą usługę. Istnieją dwa podstawowe proponowane rozwiązania: 1. Użyj predefiniowanego typu identyfikatora, takiego jak `Guid` jako `eggTypeID` we wszystkich usługach, ale uczyń `EggTypeDefiner` jedyną usługą, która wie, że jest to mapowane na `speciesCode` i `eggSizeCode` (i potencjalnie do flagi `isOrganic` w przyszłości lub cokolwiek innego). 2. Użyj obiektu wartości `EggTypeID`, który jest kombinacją `speciesCode` i `eggSizeCode` w każdej usłudze. Zaproponowałem pierwsze rozwiązanie, ponieważ mam nadzieję, że lepiej zawiera definicję typu jajka w `EggTypeDefiner` i będzie bardziej odporne na zmiany, powiedzmy, czy niektórzy ludzie chcą teraz rozróżniać jajka, czy nie są „organiczne”. Drugie rozwiązanie jest sugerowane przez niektórych ludzi, którzy rozumieją DDD lepiej niż ja, w nadziei, że w ten sposób konieczne będzie mniejsze wzbogacanie i wyszukiwanie, z uzasadnieniem, że w DDD użycie obiektu wartości jako identyfikatora jest w porządku. Mówią też, że „EggTypeDefiner” nie jest domeną, a „EggType” nie jest jednostką i jako taki nie powinien mieć identyfikatora „Guid”. Jednak nie jestem pewien, czy drugie rozwiązanie jest opłacalne. Ten „obiekt wartości” będzie musiał być serializowany do formatu JSON i adresów URL dla żądań GET i używany z różnymi technologiami (C#, JavaScript...), które przerywają enkapsulację, a tym samym usuwają wszelkie zachowanie obiektu wartości identyfikatora (jest albo pola opcjonalne?itp.) Czy jest to przypadek, w którym chcemy uniknąć czegoś, co normalnie byłoby w porządku w DDD, ponieważ próbujemy wykonać DDD w sposób rozproszony? ### Podsumowanie Czy dobrym pomysłem jest użycie niestandardowego obiektu wartości jako identyfikatora w systemie rozproszonym (rozwiązanie nr 2)?


title: Co sądzisz o tych firmach, które próbują korzystać z najnowszych technologii?

text: Dwa dni temu dostałem propozycję zdania testu HTML 5 (szukam pracy). Byłem zszokowany, ponieważ współczesne przeglądarki internetowe nie obsługują niektórych funkcji lub częściowo je obsługują. Druga strona sytuacji: pracowałem dla pewnej firmy, która nadal używa SQL Server 2000 (obecnie jest dostępny w latach 2005, 2008) na swojej produkcji. Więc moje pytanie brzmi: co myślisz o tych firmach, które próbują korzystać z najnowszych technologii? Najnowsze to zło czy dobro? **PODSUMOWANIE** Nadal korzystamy ze starej technologii ze względu na jej przewidywalność (dotyczy to w szczególności krytycznych systemów). Brak produktywności, niska ekspansywność, trudności we wdrożeniu, wdrożeniu, testowaniu starej technologii skłaniają nas do wyboru nowej. Nawet jeśli wiemy, że nowa technologia może nie być obsługiwana, a teraz jest nieprzetestowana, surowa i ma niską dokumentację, zwykła ludzka ciekawość popycha nas do jej wykorzystania. W każdym razie powinniśmy być zorientowani na naszą grupę docelową, czyli osoby korzystające z naszych rozwiązań informatycznych. Należy wziąć pod uwagę inne ważne rzeczy: * czas na wdrożenie * czas i koszt nauki * łatwość wdrożenia, wdrożenia, testowania * szybsze i łatwiejsze w użyciu


title: Strumieniowe przesyłanie wideo z minimalnym opóźnieniem

text: Moim celem jest strumieniowe przesyłanie wideo z komputera na smartfon. Jednak chcę, aby opóźnienie między nami było minimalne. WIDEO -> KODOWANIE -> TRANSFER -> DEKODOWANIE -> WIDEO Już wiem, że transfer zajmie około 50ms. To, co chcę wiedzieć, to różne metody kodowania/dekodowania i ich szybkość. Smartfon dekodujący będzie miał oczywiście ograniczoną moc obliczeniową, a także ograniczoną dostępną przepustowość. O ile rozumiem, mniej czasu na kodowanie/dekodowanie oznacza większe wykorzystanie przepustowości. Cała powyższa operacja powinna zająć maksymalnie 200 ms, najlepiej krócej. EDYCJA: @gnat Po prostu szukam liczb na temat szybkości działania kodera/dekodera. W ogóle nie jestem zbyt doświadczony w tego rodzaju teorii, ponieważ znam tylko bardzo podstawowy c#. Dlatego zapytałem tutaj, a nie o stackoverflow. Szukałem dość dużo, ale tak naprawdę nie znalazłem niczego na temat szybkości kodowania/dekodowania, a wszystko, czego chciałem, to kilka przykładowych liczb, takich jak Per był na tyle uprzejmy, że mogłem go podać. Poza tym było to bardzo teoretyczne pytanie, ponieważ użyłem serwera mediów VLC do powyższego celu. Po prostu łatwiej mi zadać prosty przykład.


title: Jak dodać system pomocy do mojego projektu WinForms?

text: Mam już prawie ukończoną pracę nad aplikacją WinForm i chciałbym dodać funkcję pomocy dla użytkowników. Nie mogę wysyłać użytkowników na stronę internetową i myślę w taki sposób, jaka pomoc otrzymujesz, gdy klikniesz Pomoc w IE (lub naciśniesz F1). Uważam, że jest to skompilowany html lub coś takiego, ale nie jestem pewien, jakie narzędzia są dostępne, aby pomóc w budowaniu tego rodzaju rzeczy, ani ile jest tam opcji. Zresztą, co powiesz na jakieś sugestie?


title: Dlaczego wszystkie klasy w .NET globalnie dziedziczą z klasy Object?

text: Jest to dla mnie bardzo interesujące, jakie zalety daje podejście "global root class" do frameworka. W prostych słowach, jakie powody spowodowały, że framework .NET został zaprojektowany tak, aby mieć jedną główną klasę **object** z ogólną funkcjonalnością odpowiednią dla wszystkich klas. Obecnie projektujemy nowy framework do użytku wewnętrznego (framework pod platformę SAP) i podzieliliśmy się wszyscy na dwa obozy - pierwszy, który uważa, że framework powinien mieć globalny root, a drugi - myśli przeciwnie. Jestem w obozie „global root”. A moje powody, dla których takie podejście dałoby dobrą elastyczność i redukcję kosztów rozwoju, sprawiają, że nie będziemy już rozwijać ogólnej funkcjonalności. Tak więc bardzo interesuje mnie, jakie powody tak naprawdę skłaniają architektów .NET do projektowania frameworków w taki sposób.


title: Narzędzia do tworzenia/wdrażania dla niewielkich (1) prac programistycznych

text: Jakie narzędzia do kompilacji lub wdrażania są dostępne dla prac programistycznych jednoosobowych w przestrzeni .NET, które są w stanie wygenerować dane wyjściowe projektu? Nie szukam _koniecznie_ szukam serwera CI (chociaż nie przychodzi mi do głowy nic innego, co robi to, czego szukam), ale szukam go do: * produkowania i publikowania dokumentacji z komentarzy xml * produkowania i publikowania projekt (aplikacja internetowa i/lub clickonce) * obsługa podstawowego wersjonowania (automatyczne zwiększanie numeru kompilacji) * praca z pliku sln * łatwa konfiguracja (< 8-16 godzin dla kogoś, kto wie niewiele lub nic o narzędziu) ) * zrób to za naciśnięciem przycisku (oczywiście po konfiguracji) Rzeczy, których nie potrzebuję: * integracja kontroli źródła : w razie potrzeby mogę wskazać sln. Nie wielka sprawa. * testowanie jednostkowe : uruchamiam zestaw testów przed zatwierdzeniem * analiza statyczna : ponownie uruchamiam je również przed zatwierdzeniem Wiem, że msbuild jest w stanie wykonać większość lub wszystko z tego, i mam przy sobie moją książkę (książki) msbuild, ale ja Nadal jestem w tym bardzo nowy i nie mam w tej chwili czasu, aby nauczyć się go na tyle dobrze, aby robić to, co chcę.


title: Jak napisać definicję oprogramowania?

text: Chciałbym się nauczyć, jak napisać definicję oprogramowania. Dlatego poszukuję materiałów lub książek online, które pomogłyby mi dowiedzieć się więcej na ten temat. Na początek chciałbym się dowiedzieć: * co musi być zawarte w takim dokumencie * czego nie może w takim dokumencie umieścić * jak zrobić definicję produktu, aby sprzedawać go wewnętrznie * znaleźć równowagę między opisami przypadków użycia _dlaczego_ ) oraz opisy funkcji (_jak_ ). Zdaję sobie sprawę, że nie jest to coś, czego można się nauczyć w 15 minut, ale myślę, że taka dyskusja mogłaby mi pomóc na dobry start.


title: Czy jest możliwe (i praktyczne) wyszukiwanie ciągu w poszukiwaniu powtarzających się wzorców o dowolnej długości?

text: Ostatnio bardzo zainteresowałem się kryptografią i badam niektóre słabości szyfrów blokowych w trybie EBC. Typowy scenariusz ataku obejmuje zaszyfrowane pliki cookie, których pola mogą być reprezentowane jako (stosunkowo) krótkie ciągi szesnastkowe. Do tej pory polegałem na swoich oczach, aby wybrać powtarzające się bloki, ale jest to dość nużące. Zastanawiam się, jakie algorytmy (jeśli w ogóle) mogą pomóc mi zautomatyzować wyszukiwanie powtarzających się wzorców w ciągu. Czy ktoś może wskazać mi właściwy kierunek?


title: utrzymywanie otwartego połączenia przez cały czas w sql

text: Opracowałem aplikację dla systemu Windows w c#, w której wielu użytkowników może dodawać numery i swoje nazwy oraz przeglądać wprowadzone dane. Problem, który mam polega na tym, że serwer jest na moim laptopie i za każdym razem, gdy się wylogowuję lub zamykam laptopa, tracą połączenie z bazą danych i nie mogą już dodawać ani wyświetlać. Wygląda na to, że port jest zamknięty czy coś. Czy istnieje sposób, aby port i ich połączenie były nawiązane przez cały czas, nawet gdy się wylogowuję?


title: Jak kraje rozwijające się wpływają na dziedzinę projektowania i rozwoju stron internetowych?

text: Podczas przeszukiwania ELance.com zauważyłem, że firmy z krajów rozwijających się, takich jak Indie i Pakistan, przechwytują wiele wolnych miejsc pracy za niskie wynagrodzenie. W jaki sposób inne kraje wpływają ogólnie na miejsca pracy związane z projektowaniem i tworzeniem stron internetowych?


title: Termin dla 24-bitów

text: Czy istnieje termin określający 24-bitową (3-bajtową) liczbę całkowitą? Wiem, że nietypowe liczniki bitów (takie jak _"nibble"_ lub _"nybble"_ dla 4 bitów) mają nazwy, a na przykład posiadanie 24-bitów zarówno w technologii wideo, jak i audio jest bardzo powszechne.


title: Jakiej metodologii lub metodologii cyklu życia oprogramowania (SDLC) używa Google?

text: Czy ktoś wie lub ma informacje o tym, które metodologie cyklu życia oprogramowania są używane przez Google?


title: Co to jest „obiekt bogaty w zachowanie” i dlaczego miałby być korzystny?

text: Mam na myśli artykuł Martina Fowlera _Mocks are not Stubs_. Wymieniając przypadki, w których uważa, że „naśladowcza” TDD będzie korzystne, powiedział > Szczególnie warto spróbować, jeśli masz problemy w niektórych obszarach, > które udawane TDD ma poprawić. Widzę tutaj dwa główne obszary. > [...] Drugi obszar dotyczy sytuacji, gdy twoje obiekty nie zawierają wystarczającej ilości zachowań, > testy pozorne mogą zachęcić zespół programistów do tworzenia większej liczby zachowań > obiektów bogatych. Moje pytanie, co on rozumie przez „obiekty bogate w zachowanie”, obiekty, które „zawierają wystarczająco dużo zachowań” itp.? I dlaczego ma znaczenie, czy obiekt zawiera wiele zachowań, czy nie, jeśli działa poprawnie?


title: Jak zorganizować JavaScript i AJAX za pomocą PHP?

text: Mój javascript wymyka się spod kontroli dla mojej aplikacji PHP. Mam 20 tagów, które prowadzą do różnych plików javascript w folderze javascript. Każdy plik javascript zasadniczo kontroluje jeden element w DOM. A jeśli plik javascript używa AJAX, będzie miał odpowiedni plik PHP, który wywoła AJAX. Na przykład plik js może sterować przyciskiem na stronie: $(document).ready(function () { $("#button").live('click', function() { $.ajax({ type: "POST", dane: ... url: "button_click.php", }); }); }); Jak widać, to wymyka się spod kontroli. Jaki jest najlepszy sposób na uporządkowanie całego javascriptu?


title: Dlaczego Wordpress i Drupal serializują dane DB?

text: Niedawno przechodziłem przez ręczną edycję niektórych tabel na stronie Wordpress. Mam również pewne doświadczenie w internacjonalizacji baz danych, więc wiem, że serializacja nie jest najlepszą opcją (IMO) do stosowania wielu języków. Więc dlaczego to się robi?


title: Prawa autorskie do oprogramowania, szablonów itp. pod prawdziwym imieniem lub pseudonimem?

text: Mam nadzieję, że moje pytanie jest proste — czy mam prawo autorskie do swojej pracy (grafiki, oprogramowania, projektowania stron internetowych itp.) pod moim prawdziwym imieniem lub pseudonimem? Moje prawdziwe nazwisko i pseudonim również można łatwo połączyć z odrobiną poszukiwań, więc czy to naprawdę ma znaczenie? Nie jestem profesjonalistą (w tym momencie). Przeczytałem to pytanie: Czy to zły pomysł, aby sprzedawać aplikacje na Androida w Android Market pod Twoim prawdziwym imieniem i nazwiskiem? i zalecili wypuszczenie na rynek aplikacji pod nazwą firmy. Przeczytałem też to pytanie: Na jaką nazwę powinienem domagać się praw autorskich do oprogramowania open source?, ale to nie odpowiedziało na moje pytanie. Wiem, że prawdopodobnie ma to znaczenie w przypadku dużych projektów, ale czy ma to znaczenie w przypadku małych projektów?


title: Czy ORM jest antywzorcem?

text: Odbyłem bardzo stymulującą i interesującą dyskusję z kolegą na temat ORM oraz jego zalet i wad. Moim zdaniem ORM przydaje się tylko w najrzadszych przypadkach. Przynajmniej z mojego doświadczenia. Ale nie chcę teraz wymieniać własnych argumentów. Więc pytam, co myślisz o ORM? Jakie są zalety i wady?


title: Czy obiekt BLOB jest bardziej wydajny niż varchar dla danych, które mogą mieć DOWOLNY rozmiar?

text: Podczas konfigurowania bazy danych chcę użyć najbardziej wydajnego typu danych dla potencjalnie dość długich danych. Obecnie mój projekt polega na przechowywaniu tytułów utworów i przemyśleń związanych z tą piosenką. Niektóre tytuły mogą mieć 5 znaków lub więcej niż 100 znaków, a myśli mogą trwać dość długo. Czy bardziej wydajne jest użycie varchar ustawionego na 8000, czy użycie obiektu BLOB? Czy używanie obiektu BLOB jest takie samo jak varchar, ponieważ istnieje określony rozmiar, który jest przydzielany niezależnie od tego, co przechowuje? czy to tylko wskazówka i tak naprawdę nie zajmuje dużo miejsca na stole? Czy istnieje określony rozmiar obiektu BLOB w KB, czy można go rozszerzyć?


title: Czy w tym momencie powinienem podać rezerwy dla elementów HTML5/CSS3 na stronie internetowej?

text: Zastanawiam się, czy w tym momencie powinienem zawracać sobie głowę dostarczaniem awaryjnych tagów i atrybutów HTML5 oraz stylów CSS3. Wiem, że prawdopodobnie wciąż jest wiele osób, które używają starszych wersji przeglądarek, a HTML5/CSS3 są wciąż całkiem nowe. Przeczytałem ten artykuł: Czy powinienem używać niestandardowych tagów na stronie HTML do wyróżniania słów? a jedna z odpowiedzi wspomniała, że ludzie trochę „oszukują” starsze przeglądarki, używając nowych tagów i atrybutów, ale stylizując je w CSS, aby upewnić się, że wyświetlają się poprawnie. To pytanie: trafność HTML5: nadszedł czas? został zapytany jakieś dwa lata temu i nie wiem już, na ile ma to znaczenie. Na przykład, chcę użyć atrybutów `placeholder` i `required` w tworzonym przeze mnie formularzu sieciowym i nie ma on etykiet pokazujących, czym jest każde `<input>`. Jak sobie z tym poradzić, czy mam się tym przejmować?


title: Podejścia, które odpowiadają na słabą łączność

text: Na początek kilka podstawowych informacji Moja firma ma oprogramowanie jako model usług, w którym ludzie logują się na nasze serwery i pracują. W celu obsługi tej aplikacji mamy aplikację narzędziową, która znajduje się na komputerze klienta i kopiuje dane binarne z naszych serwerów na ich komputery. Pierwsza iteracja tego oprogramowania przeszukała bazę danych, a następnie wygenerowała informacje po stronie klienta. Zrezygnowano z tego podejścia, ponieważ pomyśleliśmy, że istnieją pewne podstawowe wady * Odpytywanie bazy danych w celu sprawdzenia, czy trzeba wykonać jakąś pracę * Otwarcie naszego portu SQL na świat * Pobieranie wszystkich danych z bazy danych i generowanie ich na kliencie bok. Nasza druga iteracja oprogramowania wygenerowała dane na jednym z naszych serwerów i wysłała je do klienta za pośrednictwem usługi Java Messaging Service. Korzyści są postrzegane jako * Sterowane zdarzeniami * Brak odpytywania * Port SQL jest zamknięty * Dane nie są generowane przez sieć WAN Powyższe ma zilustrować podejścia, które stosowaliśmy w przeszłości. Problem, który mamy, polega na tym, że nasi klienci często mają słabą łączność z nami (utrata pakietów, słabe czasy odpowiedzi itp.). JMS miał sobie z tym poradzić, ponieważ powinien ponownie łączyć się, gdy linia wraca, ale nie zawsze tak się dzieje. Jakie są najlepsze podejścia do radzenia sobie ze słabą łącznością z klientami? **EDYTUJ** Aby wyjaśnić, co mam na myśli, że JMS nie działa zgodnie z oczekiwaniami. Oczekuję od JMS, że będzie działał niezawodnie. Mam na myśli to, że jeśli linia przestanie działać, straci pakiety lub będzie zachowywać się niewłaściwie w jakikolwiek inny sposób, implementacja JMS będzie nadal próbowała wysłać komunikat, dopóki się nie powiedzie. Jako przykład widzę prawie codziennie kolejkę JMS z podłączonymi konsumentami, ale żadne wiadomości nie są wysyłane ani odbierane, ponowne uruchomienie klienta zwykle rozwiązuje problem. Mogę mówić o więcej konkretach, jednak ze względu na tę rozmowę zostawmy JMS jako potencjalną odpowiedź **EDYTUJ 2** Chciałem innych możliwych rozwiązań mojego problemu, ale wydaje się, że ogólny konsensus jest taki, że mój obecny (JMS ) jest najlepszy. Oto 2 z moich obecnych przypadków, w których mam problemy z JMS _Przypadek 1_ Klient łączy się z kolejką pomyślnie wysyła i odbiera wiele wiadomości, po zmiennym czasie (od kilku godzin do kilku dni) klient nie otrzymuje już żadnych wiadomości. Główna kolejka pokazuje podłączonych konsumentów, ale klient nigdy nie otrzymuje wiadomości. Rozwiązanie polega na ponownym uruchomieniu aplikacji klienckiej _Przypadek 2_ Klient nigdy nie łączy się z kolejką. Klient nieustannie próbuje ponownie nawiązać połączenie, ale ponowne połączenie zawsze kończy się niepowodzeniem. Rozwiązaniem jest spróbować ponownie za kilka godzin Nasza konfiguracja jest dość prosta * Jeden publiczny serwer * OpenMQ * Klienci mają małą ilość wiadomości, od 10 wiadomości dziennie do 1000 wiadomości dziennie * Klienci nigdy nie inicjują konwersacji wiadomości ', kolejka zostaje zainicjowana i klienci odpowiadają * Wiadomości są małe, cały tekst, bez danych binarnych * konfiguracja wygląda następująco: connectionFactory = new ConnectionFactory(); connectionFactory.setProperty(ConnectionConfiguration.imqAddressList, connectionURL); connectionFactory.setProperty(ConnectionConfiguration.imqReconnectEnabled, "prawda"); connectionFactory.setProperty(ConnectionConfiguration.imqPingInterval, "30"); connectionFactory.setProperty(ConnectionConfiguration.imqReconnectAttempts, "-1"); connectionFactory.setProperty(ConnectionConfiguration.imqReconnectInterval, "30000");


title: Wygeneruj ciąg 4 znaków

text: Mam problem z generowaniem sekwencji znaków do śledzenia SMS-ów. powinien być łatwy do wprowadzenia kod wysyłany ze wszystkimi wychodzącymi wiadomościami. Odpowiedź SMS zostanie zmapowana z tym kodem. Nie mogę wygenerować kolejnej sekwencji kodu z bazy danych, ponieważ wielu klientów mogło czytać na raz i może skończyć z tym samym kodem. czy jest jakieś obejście tego? **EDYTUJ** Bazą danych jest Informix.


title: Strategia dla klientów do pobierania dziennika w czasie rzeczywistym z serwera HTTP

text: Mam aplikację HTTP Server Service, która posiada własny mechanizm logowania. Jest napisany w Delphi. Chciałbym umożliwić wielu klientom łączenie się z tą usługą i uzyskanie aktualizacji dziennika w czasie rzeczywistym. Logowanie do usługi porusza się dość szybko, jest wiele rzeczy do zalogowania. Czasami może być do 50 wiadomości w ciągu 1 sekundy. Istniejący log, który jest już zaimplementowany, nie jest zapisywany, jest tylko przechowywany w pamięci usługi serwera - gdzie będę musiał go rozesłać do każdego klienta, który go potrzebuje. Gdy wszyscy klienci mają komunikat dziennika, należy go usunąć. Zamierzam użyć protokołu HTTP, aby "zapytać" serwer o dziennik i odpowiedzieć pakietem XML. Połączenia nie są podtrzymywane. Jedynym problemem jest to, że serwer powinien wysyłać klientowi tylko te rekordy logów, których potrzebuje, a nie wszystko. Nie mam możliwości, aby serwer wysyłał dziennik do klientów w czasie rzeczywistym, więc każdy klient musi wielokrotnie prosić serwer o najnowsze rekordy dziennika. Ten serwer HTTP jest bardzo lekki i nie ma zarządzania sesjami. Nie ma nawet żadnego rodzaju uwierzytelniania. Jedynym sposobem, jaki widzę, jest zarejestrowanie się klienta na serwerze, a za każdym razem, gdy na serwerze jest wydawany dziennik, tworzy kopię dziennika dla każdego klienta, gdzie każdy klient ma kolejkę dziennika (listę ciągów). Załóżmy jednak, że 100 klientów jest połączonych i oczekuje na otrzymanie tego dziennika. Oznacza to, że serwer musi utworzyć 100 kopii każdego dziennika, dodać ten dziennik na końcu każdej kolejki dzienników klienta i czekać na żądanie klienta. W tym momencie, gdy serwer odpowiada dziennikiem XML, powinien opróżnić (usunąć) wszystko, co znajduje się w kolejce. Martwię się jednak, że może to spowodować problemy z pamięcią. Każda kolejka dziennika klienta może otrzymać 100 komunikatów dziennika, zanim klient zażąda najnowszych dzienników. Jak mam to zrobić w najszybszy możliwy sposób, nie zmniejszając wydajności serwera? Staram się uniknąć konieczności tworzenia kopii każdego dziennika dla każdego klienta.


title: Jak łatwe w utrzymaniu są automatyczne refaktoryzacje?

text: Resharper zaproponował, aby włączyć moją pętlę: foreach (JObject obj w arr) { var id = (string)obj["Id"]; var identyfikator konta = (podwójny) obj["Identyfikator konta"]; var NazwaWydziału = (ciąg)obj["NazwaDziału"]; i++; } ...do instrukcji LINQ. Zgodziłem się i dało to: int i = 1 + (z JObject obj w arr let id = (string) obj["Id"] let accountId = (double) obj["AccountId"] select (string) obj[" NazwaDziału"]).Count(); Gee whillikers, skaczący Jehoshaphat i Heavens to Murgatroid! To sprawia, że zastanawiam się, czy roboty, które stają się mądrzejsze ode mnie, to dobra rzecz; jak to możliwe do utrzymania? Odpowiedź: nie jest, ponieważ nie mogę tego zrozumieć; R# mógł równie dobrze przekonwertować go na kod maszynowy, o ile mogę go grok. Muszę jednak przyznać, że jest „fajny”. W którym momencie ideał staje się wrogiem dobrego w tego rodzaju scenariuszu? ## AKTUALIZACJA Przy drugim przejściu, R# mówi mi dla tego wiersza LINQ, „Zmienna lokalna „i” nigdy nie jest używana” Pozwalając ją usunąć, wiersz staje się: var arr = JsonConvert.DeserializeObject<JArray>(s) ; Hmm! Teraz to jest grokkable; powodem, dla którego wcześniej dzieliłem elementy na poszczególne var, było to, że mogłem zobaczyć, co w nich jest: MessageBox.Show(string.Format("Object {0} w tablicy JSON: id == {1}, accountId == {2}, nazwadziału == {3}", i, id, identyfikator konta, nazwadziału)); ...ale po tym, jak ten komunikat został skomentowany, wydaje mi się, że powyższe jest jednak lepsze.


title: Wdrażanie nowej wymaganej funkcji po wydaniu oprogramowania

text: **Fałszywy scenariusz** Istnieje oprogramowanie, które zostało wydane 1 rok temu. Oprogramowanie ma za zadanie mapować i rejestrować wszelkiego rodzaju zwierzęta na naszej planecie. Kiedy oprogramowanie zostało wydane, klient musiał znać tylko nazwę naukową zwierzęcia, flagę, jeśli jest zagrożone wyginięciem i skalę zagrożenia (to jest fałszywe oprogramowanie i specyfikacja, nie chcę o tym dyskutować tutaj). W DB zapisanych jest już 100 000 rekordów zwierząt. **Nowa funkcja** Rok później klient chce mieć nową funkcję. Bardzo ważna jest dla niego znajomość klas zwierząt, a to jest pole wymagane. Więc prosi mnie o umieszczenie pola do wprowadzenia klasy zwierząt, a to pole jest wymagane. A może gdzie odkryto to zwierzę. **Problem** Mam już 100.000 zarejestrowanych zwierząt bez klasy lub gdzie została wykryta, ale muszę wstawić nową kolumnę do przechowywania tych informacji i ta kolumna nie może być pusta. Nie mam domyślnej wartości dla tej sytuacji (nie ma domyślnej klasy zwierząt ani miejsca, w którym została odkryta). Nie chcę utrzymywać reguły wymagań tylko w moim oprogramowaniu, moja baza danych również musi mieć to wymaganie (lubię zachować reguły biznesowe również w bazie danych). Jakie są alternatywy rozwiązania tej sytuacji? _Jestem w sytuacji, w której nie można wyświetlić podglądu ani przejrzeć tej nowej funkcji dla istniejących rekordów. Czas już minął i nie mogę wrócić na czas, aby go zdobyć_


title: Styl kodowania i wady

text: Przez lata opracowałem kilka technik opartych na stylu, których używam, aby uniknąć błędu `if(const == lvalue)` zamiast `if(lvalue == const)`, ponieważ pierwsza nie może paść ofiarą klasyki przypadkowy błąd przypisania. Ostatnio pracowałem nad projektem o bardzo nietypowych standardach stylu i stwierdziłem, że mam znacznie większe trudności z odczytaniem kodu. Czy ktoś widział jakiekolwiek statystyki dotyczące określonego stylu kodowania i jego poziomów defektów lub miał jakiekolwiek doświadczenie w zmienianiu samego stylu w celu poprawy wskaźników defektów.