title: gtkmm zarządzaj/dodaj a inteligentne wskaźniki:

text: gtkmm zapewnia zarządzanie przez cały okres istnienia widżetów przy użyciu Gtk::Widget* aWidget = Gtk::manage(new Widget()); Gtk::Widget.add(*aWidget); To deleguje zarządzanie okresem istnienia aWidget do jego widżetu kontenera. Mamy też kilka rodzajów inteligentnych wskaźników, w szczególności szablony inteligentnych wskaźników C++ 11, których używam wszędzie. Uważam, że składnia zarządzania/dodawania jest łatwiejsza i czystsza w użyciu, ale nie jest ona częścią standardu C++, jest to funkcja specyficzna dla gtkmm, co sprawia, że myślę, że powinienem trzymać się std::shared_ptr itp. Zastanawiam się więc, jakie są zalety/wady inteligentnych wskaźników w porównaniu z modelem zarządzania/dodawania gtkmm (poza przypadkami, w których potrzebne jest odniesienie po usunięciu kontenera właściciela lub gdy masz widżet najwyższego poziomu, który nie zawiera widżetu).


title: Czy nowicjusz w Perlu powinien nauczyć się zarówno Perla 5, jak i 6?

text: Ostatnio zacząłem bawić się Perlem 5 i wydaje się to bardzo interesujące. Chciałbym poświęcić trochę czasu na dogłębne poznanie tego, kiedy tylko będę mógł. Moje pytanie, ponieważ Perl 6 powoli ma miejsce (wierzę...) i mówi się, że łamie wsteczną kompatybilność, brzmi: czy lepiej uczę się Perla 5, a następnie Perla 6, czy też uczę się bezpośrednio Perla 6, co jest lepszą inwestycją czasu Tobie? Jeśli zmiany z Perla 5 na 6 utrudniają zrozumienie Perla 5, z pewnością powinienem zacząć od Perla 5, aby móc czytać „stare” skrypty, a następnie sprawdzić Perl 6. Jest też „Perl 6 nie jest jeszcze całkowicie zwolniony" problem. Wiem, że istnieje wczesna implementacja dla Perla 6, ale jeśli Perl 6 nie zostanie oficjalnie wydany przed upływem kilku lat, na razie pozostanę przy 5. Na pewno chciałbym mieć jakiś wgląd w to. Zapraszam do dyskusji na tematy powiązane. Moje zainteresowanie językami skryptowymi jest dość nowe. Dziękuję!


title: Co kwalifikuje „zbyt wiele żądań bazy danych” w kodzie?

text: To jest dyskusja ja i niektórzy z moich kolegów toczą i myśleli, że przyjdę tutaj i zobaczę, co jeśli będzie ogólny konsensus w tej sprawie. W zasadzie sprowadza się to do następujących 2 opinii na temat wywołań baz danych: 1\. Wykonaj jedno duże wywołanie, aby uzyskać wszystko, co może być potrzebne do zmniejszenia bazy danych liczby wywołań DB 2\. Twórz mniejsze oddzielne wywołania w oparciu o to, co jest wymagane, aby zmniejszyć rozmiar wywołań DB. Tam, gdzie to szczególnie wchodzi w grę, występuje wspólny kod. Użyjemy przykładu klasy Employee, ponieważ jest to dość proste. Załóżmy, że Twoja klasa Pracownik ma 10 atrybutów wartości (imię, nazwisko, data zatrudnienia itp.), a następnie 2 atrybuty klasy... 1 wskazujący na klasę Department, a następnie 1 przełożony, który wskazuje na inny obiekt Employee. W sposobie myślenia nr 1 wykonałbyś jedno wywołanie, które zwróci dane pracownika, a także pola potrzebne do wypełnienia atrybutów działu i kierownika ... lub przynajmniej pola najczęściej używane z tych podobiektów. Zgodnie z nastawieniem nr 2, najpierw wypełniłbyś tylko obiekt Pracownik, a następnie wypełniłbyś tylko obiekty Działu i Przełożonego, jeśli i kiedy są rzeczywiście wymagane. Stanowisko 2 jest dość proste ... zminimalizuj rozmiar żądań i liczbę obiektów bazy danych, które muszą zostać trafione za każdym razem, gdy zostanie wykonane jedno z tych żądań. Stanowisko #1 jest takie, że nawet gdyby można go było poprawnie zaimplementować, sam fakt, że kod musiałby wykonywać wiele połączeń, spowoduje większe obciążenie połączenia między serwerem WWW a bazą danych, w przeciwieństwie do jego zmniejszenia. Siłą napędową badań jest to, że ilość ruchu między naszym serwerem internetowym a serwerem bazy danych wymyka się spod kontroli.


title: Jakie są plusy i minusy GPL?

text: Zastanawiam się nad licencjonowaniem oprogramowania typu open source i przyglądam się licencji GPL. Jakie są plusy i minusy korzystania z tej licencji?


title: Unikalny algorytm ID

text: Mam trasę, która zawiera obiekty. Każda z nich ma wartość 0 lub 1. Potrzebuję unikalnego identyfikatora trasy, który zidentyfikuje dowolną kolejność obiektów. Obecnie robię to za pomocą liczby binarnej, która jest przeliczana na dziesiętną (patrz obrazek). ![Objects](http://i.stack.imgur.com/Rvbom.png) Problem w tym, że liczba obiektów w trasie wynosi do 15. Czyli liczba dziesiętna będzie bardzo duża (do 32767) z wiele wartości, które nigdy nie będą używane. Jak przekonwertować tę liczbę na inną unikalną wartość, ale znacznie mniejszą (<255)? Muszę to zrobić tylko za pomocą prostych operatorów arytmetycznych (+,-,*,div).


title: Przerażający test rozmowy programistycznej C# - jakaś rada?

text: Mam w kolejce możliwą pracę programisty C#, ale zanim będę mógł przeprowadzić rozmowę kwalifikacyjną, muszę zdać test w agencji pracy. Teraz, mimo że jestem starszym programistą z ponad 10 letnim doświadczeniem w programowaniu i ponad 3 z tych lat w c#, naprawdę nie mogę się doczekać tego testu i myślę, że jest duża szansa, że go obleję. Z mojego doświadczenia wynika, że te testy są nieprzewidywalne, prosząc o rzeczy, których rzadko używasz w codziennych sytuacjach w pracy. Potrzebuję twojej najlepszej rady na temat tego, co powinienem poprawiać - na przykład dobrej książki lub strony internetowej. Na przygotowanie mam niecały tydzień i koniecznie zdałem. Z góry dziękuję. EDYCJA: Aby jeszcze bardziej uzasadnić moje obawy związane z pisaniem takich testów - Rozważ następujące pytanie: 12) Zdarzenie to: a) Wynik działania użytkownika - poprawna odpowiedź b) Wynik strony c) kod wymuszający działanie użytkownika Prawidłowa odpowiedź według testu to A, ale odkąd zajmuję się tworzeniem SOA (często kiedy zdarzenia mogą być oparte na zdarzeniach systemowych (nie na działaniach użytkownika) jestem w 100% pewien, że zdarzenie nie musi być kierowane przez użytkownika akcja.To było również pytanie C# (nie pytanie ASP.net).W oparciu o moje zrozumienie, nie mogłem znaleźć prawidłowej odpowiedzi, ale B wydaje się najlepsze z wielu (jeśli definicja strony to: dowolny podmiot, który może wywołać zdarzenie. Takie pytania mnie przerażają.


title: Badania nad typowymi problemami, które ludzie mają podczas nauki programowania?

text: Czy są jakieś badania nad najczęstszymi błędami lub błędami koncepcyjnymi, które popełniają ludzie, którzy nie mieli wcześniej kontaktu z programowaniem komputerowym, próbując uczyć się programowania? To pytanie może być idiotą, ale aby pomóc zmniejszyć tę możliwość: * To pytanie nie dotyczy ludzi, którzy nie mogą nauczyć się programowania lub uważają to za zbyt trudne, ale o problemach lub błędach, które nawet ci, którzy się uczą, i może nawet znaleźć łatwe, są bardziej prawdopodobne, że na początku będą mieć lub zrobić. * To pytanie nie dotyczy błędów, które popełniają programiści, którzy już wiedzą, jak programować, tylko o czystych nowicjuszach. * Nie chodzi o nauczanie ani o to, jak uczyć, chodzi o to, co, nawet po „właściwym nauczaniu”, pewien procent uczniów klasy wstępnej może na początku nadal myśleć lub robić w (być może nawet zaskakujące dla nauczyciela) sprzeczności z materiał dydaktyczny. To pytanie nie dotyczy również stylu lub wzorców programowania, ale rodzaju błędów mentalnych u początkujących, które uniemożliwiają jakiekolwiek rozwiązanie kodu, nawet jeśli nie wykorzystuje się aktualnej myśli w najlepszych praktykach.


title: Wydajne przechowywanie i parsowanie danych przeglądarki klienta

text: Czy istnieją interfejsy API odcisków palców przeglądarki, które zamiast uruchamiać informacje o przeglądarce (np. agent użytkownika, zainstalowane wtyczki, rozdzielczość ekranu, czcionki systemowe itp.) za pomocą funkcji skrótu, zamiast tego kodują informacje za pomocą bezstratnego algorytmu kompresji danych w celu utworzenia ciągu, który może później zostać zdekompresowany, aby otrzymać oryginalną informację? Szukałem wydajnego sposobu na kompresję wszystkich czcionek systemowych, wtyczek itp. z danej przeglądarki do małego ciągu, aby łatwiej było mi je przechowywać, a następnie odczytywać poszczególne ciągi, gdy muszę tam oryginalne format, ale nie udało mi się znaleźć niczego, co choćby częściowo to robi.


title: Jaka jest różnica między metodami wstawiania i dlaczego jedna jest szybsza?

text: Wstawiłem 14.485 linii w MySQL w następujący sposób: INSERT INTO `bairros` (`id`,`cidade_id`,`descricao`) VALUES (1,8891,'VILA PELICIARI'); WSTAWIĆ W „Bairros” („id”, „cidade_id”, „descricao”) WARTOŚCI (2,8891, „VILA MARIANA”); ... Zajęło to około 5 minut. Musiałem wstawić do innej tabeli 16.021 wierszy, tę samą bazę danych, więc do testu zrobiłem tak: INSERT INTO `bairros` (`id`,`cidade_id`,`descricao`) VALUES (1,8891,'VILA PELICIARI'), (2,8891, 'VILA MARIANA'); ... Zajęło to tylko kilka sekund. Jaka jest różnica w przypadku bazy danych między skryptami? A dlaczego jedno jest szybsze od drugiego?


title: Jak serwer produkcyjny i serwer pomostowy faktycznie działają w środowisku produkcyjnym?

text: Posiadam jeden serwer Linux VPS dla mojej firmy i zajmujemy się tworzeniem stron PHP. To, co zwykle robię, to po prostu tworzenie subdomeny strony głównej, takiej jak test1.mainsite.com i pracuję nad tym, aż do końca. a następnie zmień nazwę domeny. Słyszałem, że duże firmy mają serwer pomostowy i serwer produkcyjny. Chcę tylko wiedzieć, jak działa ten system i kiedy strona jest gotowa, w jaki sposób przenoszą witrynę przez FTP, SSH, RSYNC, co robią ze starym serwerem pomostowym. Po prostu chcę wdrożyć strategie przedsiębiorstwa w mojej firmie i chcę wiedzieć, jak postępować Dzięki


title: Jak radzić sobie z zależnościami zewnętrznymi w projekcie open source?

text: Kiedy ktoś pisze projekt open-source i używa Google Code lub GitHub i chce korzystać z biblioteki takiej jak Lua, jak należy to zrobić? * Czy zależność powinna być uwzględniona w repozytorium? * Czy zależność powinna być skompilowana z tego samego skryptu kompilacji, co reszta projektu, czy z oddzielnego skryptu kompilacji? Biorąc pod uwagę, że biblioteka nie wymaga instalacji przed kompilacją.


title: Czy zamiast testu jednostkowego obejmującego dane osobowe należy stosować test integracyjny?

text: Staram się opracować serię testów jednostkowych dla systemu produkcyjnego, które są zależne od numeru ubezpieczenia społecznego danej osoby. Chociaż czuję się bardziej niż komfortowo, zakodując wyraźnie zły numer ubezpieczenia społecznego, aby przetestować pod kątem niepowodzenia, niepokoi mnie włączenie takiego, który jest dobry dla prawidłowych (i zdawania) wyników. Poniżej znajduje się uproszczony test, którego używam: [TestMethod] public void API_Hours_Get() { var controller = new HoursController(); var pracownik = new EmployeeController(); var badResult = controller.Get(123124569); var goodResult = controller.Get(employee.GetEmployeeByUserId("Nazwa użytkownika").First().SSNnumer); Assert.IsFalse(badResult.Any()); Assert.IsTrue(goodResult.Any()); } Ten test wypada dobrze i daje mi oczekiwane wyniki. Ale, jak rozumiem, jest to test integracyjny. Z punktu widzenia najlepszych praktyk, czy ten substytut jest w porządku dla mojego zestawu testów i po prostu ignoruję fakt, że nie mam „czystego” testu jednostkowego dla modułów zależnych od SSN, czy też istnieje lepsze podejście do takich sytuacji?


title: Nazewnictwo powiązanych klas i interfejsów

text: Stworzyłem klasę `ObjectParser`, która analizuje dane na obiekty o silnych typach przy użyciu `IObjectParserDataSource` jako źródła danych (dane mogą być plikiem Excel, plikiem tekstowym, tablicą, ciągiem zapytań itp.). Przykłady moich implementacji `IObjectParserDataSource` to: * `TextFileObjectParserDataSource` * `ExcelFileObjectParserDataSource` Te nazwy klas są dla mnie naprawdę długie i zawiłe. Mógłbym je nazwać: * `TextFileDataSource` * `ExcelFileDataSource` Ale to wprowadza pewien poziom niejednoznaczności i na pierwszy rzut oka nie są one tak wyraźnie powiązane z `IObjectParserDataSource`. Staje się to ważne, ponieważ zdefiniowanie tych źródeł danych nastąpi w kodzie klienta i chcę zminimalizować potencjalne zamieszanie i niepewność. **Jak nazwałbyś te zajęcia w takim scenariuszu?**


title: Notepad ++ dla normalnego tekstu i podświetlenia składni?

text: Chcę używać Notepadd ++ do robienia notatek na temat języka programowania Python. Chcę napisać kilka normalnych zdań i jednocześnie pisać kody na tej samej stronie. Nie chcę pokazywać numerów linii dla normalnych tekstów, ale chcę pokazać numery linii dla kodów programowania. czy to możliwe? Mam na myśli, że normalne linie powinny być bez podświetlania składni i numerów linii, które zwykle pokazują się po lewej stronie każdej linii. A podświetlanie składni dla kodów zapisanych w tym samym pliku? Na przykład... Aby wydrukować napisy w Pythonie powinniśmy użyć pojedynczych lub podwójnych cudzysłowów po słowie kluczowym print. Na przykład... 1 print "Hello World!" (ta linia powinna być z numerem linii i podświetleniem składni)


title: Czy powinienem refaktoryzować zmienne jednoliterowe dla konstrukcji, takich jak nazwy wskaźników/struktur?

text: I nie, nie odnoszę się do pojedynczych zmiennych w pętlach lub wyjątkach. Powiedzmy nazwy wskaźników/struktur w dużych programach c ,c++ . Czy istnieją języki, w których ten rodzaj nazewnictwa jest akceptowalny lub jest normą. Lub dowolne konstrukcje w c/c++ (nie iteratory, pętle), w których jest to niejawne. jaka jest ogólna praktyka w obsłudze takich konwencji nazewnictwa? czy mógłbyś to zmienić? jeśli tak, jak byś to zmienił? Jeśli jesteś kierownikiem projektu zespołowego i ktoś zgłasza problem związany z konwencją nazewnictwa, jak byś to postrzegał?


title: Kompilowanie kodu asemblera OpenGL Assembly Language (ARB)

text: Mam dwa pytania do zadania. 1. Jeśli chcę kodować w ARB, jakie są wymagania wstępne, aby napisać kod? 2. Ostatnio używam OpenGL i DirectX. Chcę skompilować i uruchomić kod ARB. Jakiego kompilatora powinienem użyć do skompilowania i uruchomienia kodu?


title: Jak stworzyć diagram przypadków użycia dla gry planszowej na PC?

text: Zmagam się z zadaniem, ponieważ dane mi było ćwiczyć UML i przypadki użycia. Problem polega na tym, że powinienem modelować komputerową wersję gry planszowej, więc kilku rzeczy nie jestem pewien. oczywiście nie ma znaczenia, czy grasz przeciwko PC, czy innemu graczowi, działania są takie same. Gra jest po prostu jak kółko i krzyżyk. Np. > Aktor Gracz ---(Umieść diament)-----uwzględnij---->(Sprawdź > wiersz)---uwzględnij-->(Zamień graczy) Ale gra toczy się na komputerze, więc czy sprawdzanie wiersza naprawdę jest przypadkiem użycia? I to samo z graczami Swap? Ponieważ system by to zrobił. Z drugiej strony, jeśli tak nie było, jak mógłbym kontynuować?


title: Czy dobrą praktyką jest umieszczanie analizy błędów i poprawianie kodu w raporcie o błędzie?

text: Kiedy naprawiam błąd, krótko wspominam, na czym polegał problem i w jakiej wersji został naprawiony. Ale w ten sposób nikt nie będzie wiedział, jak bardzo skomplikowana była sprawa i ile wysiłku włożono w analizę i ustalenia. Jaka jest najlepsza praktyka dla programisty, aby pokazać takie rzeczy kierownictwu wyższego szczebla, aby został zauważony?


title: Czym są haki?

text: Ciągle natykam się na haki tego terminu w różnych artykułach programistycznych. Nie rozumiem jednak, czym one są i jak można je wykorzystać. Więc chciałem tylko wiedzieć, co to jest koncepcja haczyków; gdyby ktoś podłączył mnie do kilku przykładów, szczególnie w kontekście tworzenia stron internetowych, byłoby świetnie.


title: Co byś zrobił, aby usprawnić pracę małego zespołu deweloperskiego?

text: Moja firma przechodzi przetasowania i staram się o pracę mojego szefa, który wspina się po szczeblach kariery. Nowa rola dałaby mi szansę na przeniesienie naszego zespołu programistów w XXI wiek i chciałbym mieć pewność, że: 1. Podczas rozmowy kwalifikacyjnej mogę przekazać rozsądne sugestie, jak znaleźć pracę, aby naprawić zespół 2. Jeśli Dostaję pracę, w której mogę wprowadzić pewne zmiany, aby faktycznie poprawić życie programistów i ich wydajność. Chcę wiedzieć, co mogę zasugerować, aby ulepszyć sposób, w jaki pracujemy, ponieważ uważam, że jest to bałagan, ale za każdym razem, gdy proponuję zmianę, jest ona odrzucana, ponieważ każdy czas spędzony na wdrażaniu zmiany to czas, którego nie poświęca się na rozwijanie oprogramowanie. Oto stan zaawansowania w tej chwili: * Mój zespół składa się z 3-4 programistów (głównie Java, ale ja wykonuję trochę pracy .Net) * Każdy członek zespołu pracuje zwykle nad 2-3 projektami na raz * Jesteśmy każdy odpowiedzialny za cały cykl życia projektu od projektu do testowania. * Zwykle nad projektem pracuje tylko jedna osoba (chociaż zdarzają się dziwne projekty, nad którymi pracuje więcej niż jedna osoba.) * Projekty są zwykle wykonywane na zamówienie dla jednego klienta lub są w dużym stopniu uzależnione od konkretnego środowiska klienta. * Mamy 2-3 "Produkty", które rozwijamy, aby sprostać wymaganiom klientów. * Używamy SVN do kontroli źródła * Nie wykonujemy ciągłej integracji (chciałbym zacząć) * Używamy naprawdę podstawowego narzędzia do śledzenia błędów do wewnętrznego śledzenia problemów (chciałbym przejść do systemu zarządzania problemami/zadaniami) Wszelkie zmiany, które przyniosą nagły spadek generowania przychodów, zostaną prawdopodobnie odrzucone, firma nie jest przystosowana do rozwoju, większość pozostałych zadań zespołu technicznego można rozbić, aby zainstalować ten sprzęt, skonfigurować go i raz praca jest skończona, jest skończona i nigdy więcej na nią nie trzeba patrzeć. Ta mentalność wkradła się do zespołu programistów, ponieważ jest częścią kultury firmy.


title: Prywatna Wiki vs Google Doc, aby udostępnić specyfikacje dla zespołu?

text: Mój zespół zastanawia się, czy umieścić specyfikacje na prywatnej wiki, czy w dokumencie Google. Czy ktoś może dostarczyć mi skróconą listę zalet/przeciw za korzystanie z prywatnej wiki w porównaniu z dokumentami google do specyfikacji zespołu? Moje przeczucie jest takie, że google-docs jest cięższy i wolniejszy w użyciu, ale łatwiejszy, podczas gdy prywatne wiki, takie jak mediawiki, wydają się trudniejsze do skonfigurowania i uruchomienia.


title: Czy TOS jest konieczne?

text: Powiedzmy, że ktoś hostuje aplikację internetową, do której inni mogą przyjść, zarejestrować się i używać za darmo (jak stackoverflow lub stackexchange). Czy konieczna jest umowa o świadczenie usług? Podoba Ci się ten Regulamin dotyczący wymiany stosów? Jeśli nie ma umowy TOS, czy istnieją dorozumiane (domyślne) warunki prawne?


title: Jak przekonwertować listę wymagań na ograniczenia?

text: Staram się przygotować mój pierwszy dokument projektowy oprogramowania. Jestem samoukiem i nie mam formalnego wykształcenia w CS. Po zapoznaniu się z nim trochę wcześniej, stworzyłem listę wymagań, cech i niejakości dla systemu, która zapewnia przegląd z menedżerskiego punktu widzenia, co projekt ma zapewnić. Intencją było, aby można je było przekształcić w ograniczenia projektowe, które z kolei będą kierować uzasadnionymi decyzjami projektowymi. Jak dotąd nie wchodzą one w wiele szczegółów dotyczących tego, jakie zasoby mają być dostarczone, ale są ogólne w tym sensie, że powinny dotyczyć wszystkich zasobów obecnych w systemie. Mam jednak trudności z przejściem do następnego kroku. Jak dokładnie ma wyglądać Ograniczenie Projektu? Jak szczegółowe lub ogólne powinno być? Jak przekonwertować wymagania domeny na ograniczenia? Czy już zwariowałem i przesadziłem? :-) **Tło** Jestem jedynym programistą w małej firmie usługowej. Mamy aktualny HTML z aplikacją PHP PIs, która rozwijała się organicznie i nie ma infrastruktury testowej. Edycja jednego bitu ma reperkusje i niezamierzone konsekwencje w odległych częściach aplikacji. Chcę go zastąpić bardziej profesjonalnie zaprojektowanym (w rzeczywistości dowolnym zaprojektowanym), opartym na obiektach z zestawem testów. Kierownictwo nie zna się na programowaniu i muszę wiedzieć, które z obecnych funkcji są kruche, które przepływy pracy są ugrzęźnięte itp. Ma to być moją wskazówką zarówno podczas wiecznie odkładanego spotkania projektowego, jak i podczas wdrażania. * * * Do tej pory mam następujące informacje: **Terminologia** * „Właściciel” odnosi się do firmy lub oddziału prowadzącego własne wdrożenie Oprogramowania, z danymi niezależnymi od wszelkich innych wdrożeń. * „Programista” oznacza osobę, która jest programistą z dostępem do zapisu kodu źródłowego lub administratorem bazy danych pracującym dla Właściciela. * „Użytkownik” oznacza osobę, która uwierzytelniła dostęp do wdrożenia. * „Personel” oznacza Użytkownika, który pracuje dla Właściciela. * „Klient” oznacza Użytkownika będącego klientem Właściciela. **WYMAGANIA** Jakie funkcje _muszą_ przedstawiać usługa? * **Platformy** : dostęp do usługi musi być możliwy za pośrednictwem różnych nowoczesnych lub nowoczesnych urządzeń komputerowych do zastosowań biznesowych. (tj. komputer stacjonarny, laptop, tablet i smartfon od 2013 r.). * **Mobilność** : Należy podjąć rozsądne wysiłki w celu zapewnienia dostępu do usługi wszystkim Użytkownikom, niezależnie od ich fizycznej lokalizacji. * **Bezpieczne** : wszystkie dane muszą wymagać uwierzytelnienia i autoryzacji dostępu, a niezabezpieczone żądania muszą mieć wystarczające potwierdzenie, że zostały zainicjowane przez użytkownika. * **Kontrola dostępu** : Zasoby i zestawy zasobów muszą mieć zmienne uprawnienia autoryzacji. * **Uprawnienia administratora** : Autoryzacja odczytu i zapisu do poszczególnych zasobów i zestawów zasobów musi być osobna. * **Niezniszczalny** : System nie może być wprowadzony w stan „zepsuty” przez Użytkowników. * **No Clobber** : Użytkownik nie powinien mieć możliwości nieświadomego nadpisywania zmian wprowadzonych przez innego użytkownika. * **Off-line** : Zaplanowane wydarzenia Użytkownika na bieżący dzień muszą być czytelne w trybie offline. * **Rapid Bootstrap** : Nowy personel musi być w stanie szybko nadążyć za wewnętrzną stroną systemu. * **Owner Agnostic** : W nowym, czystym wdrożeniu dla innego Właściciela nie powinno znajdować się nic specyficznego dla jednego Właściciela. * **Brandable** : właściciel musi mieć możliwość skonfigurowania systemu tak, aby wyświetlał swoją markę i specyfikę firmy. * **Bezpieczne dane** : należy łatwo zaplanować częste i niezawodne tworzenie kopii zapasowych wszystkich danych. **JAKOŚĆ** Jakie inne cechy _chcielibyśmy_ prezentować w produkcie końcowym? * Szybka realizacja poprawek przez programistów. * Szybkie prototypowanie nowych funkcji. * Bezbłędne wdrażanie nowych funkcji. * Zmiany bez regresji. * Atrakcyjny interfejs klienta. * Wydajny interfejs personelu. * Najszersza obsługa urządzeń i systemów operacyjnych rozsądnie osiągalna. * Wszystkie dane dotyczące odpowiedzialności/winy (kto co zrobił, kiedy?) powinny być nieulotne. * Wszystkie inne dane powinny być edytowalne przez użytkownika z odpowiednią autoryzacją, bez konieczności posiadania programisty. * Kopie zapasowe danych powinny być tworzone na żądanie przez odpowiednio upoważnionego użytkownika. * Kopie zapasowe danych powinny być przywracane na żądanie przez odpowiednio upoważnionego użytkownika. **BEZ JAKOŚCI** Jakie funkcje _nie są ważne_ i pozwolą na elastyczność projektowania? * Wybór języka programowania * Jednojęzyczność interfejsu użytkownika * Nie potrzebujemy ogólnego systemu importu lub eksportu zasobów. * [lista jest niepełna]


title: Jak mogę uratować staż?

text: Obecnie pracuję jako stażysta w bardzo dużej firmie zajmującej się tworzeniem oprogramowania. Stanowisko, o które się ubiegałem, nie było konkretnie stanowiskiem deweloperskim, ale zespół, który mnie zatrudnił, chciał, aby specjalizacja z CS pomagała w rozwijaniu dla nich niektórych wewnętrznych projektów. Jestem tu od czterech tygodni i początkowe oszołomienie zaczyna ustępować. Jednak jestem jedynym specjalistą w dziedzinie CS w całym biurze — nikt w moim zespole, w budynku ani nawet w sąsiednich lokalizacjach nie ma żadnego doświadczenia w tworzeniu oprogramowania. Najlepsze, co mam, to menedżer bazy danych, a jego dział jest zbyt zajęty, aby wspierać mnie w moich projektach. Moi koledzy z zespołu pomagają mi uczyć się, jak wykonują swoją pracę (co jest dla mnie ważne, aby wykonywać moją pracę), ale nie ma nikogo, kto mógłby pomóc w mojej _mojej_ pracy, tj. rozwoju. Projekty, które mi dali, mają większy zakres niż wszystko, co robiłem w szkole. To, w połączeniu z faktem, że pracuję sam, próbując tworzyć aplikacje od podstaw, bez żadnych wskazówek czy nawet jasno określonych celów, bardzo mnie martwi o to, czy odniosę sukces. Ledwo wiem, od czego powinienem zacząć, a teraz zostały mi chyba niecałe dwa miesiące. Czuję, że powinienem uczyć się procesu tworzenia oprogramowania, ale teraz czuję się, jakbym przedzierał się przez ciemność. Jest to dla mnie szczególnie niepokojące, ponieważ przede wszystkim nie jestem zbyt pewny swoich umiejętności programistycznych. Sama badam i uczę, ale dostaję tylko fragmenty. Mają wobec mnie wysokie oczekiwania, ale nie jestem pewien, czy potrafię je spełnić. Oczywiście muszę usiąść i porozmawiać z moimi menedżerami o stanowisku, na którym się znajduję i zamierzam to zrobić jak najszybciej (często są w podróży i poza biurem). Jak mam sobie z tym poradzić? Ten staż się skończy, zanim się zorientuję, a ja nie chcę wyjeżdżać z niczym do pokazania na czas spędzony tutaj. Oni też tego nie chcą i zawsze są gotowi mi pomóc, ale bez znajomości programowania mogą zrobić tylko tyle. Boję się im powiedzieć, że nie jestem w stanie wyprodukować tego, czego chcą. Jak mam to odnieść do nich? Widzę, jak stażyści inżynierowie otrzymują pomoc od innych inżynierów, uczą się, jak wykonywać swoją pracę, i czuję, że po prostu siedzę tutaj, czekając na swój czas. Wszelkie porady dotyczące naprawy mojej sytuacji byłyby bardzo mile widziane. **Aktualizacja** Doceniam wszystkie pomocne uwagi od wszystkich, pomogło mi to uspokoić umysł. Pierwszą rzeczą, jaką zrobiłem, było spotkanie z moimi menedżerami i przełożonymi. Rozmawialiśmy o tym, czego oczekiwano od mojego pobytu tutaj. Rozumieją, że jako stażysta nie mam tak dużo czasu, a to pomogło określić rodzaj struktury, którą chcemy osiągnąć, co pozwoli przyszłym stażystom lub pracownikom, miejmy nadzieję, wykorzystać to, co zostawię. Odpowiedziałem również na moje obawy dotyczące moich możliwości w wyznaczonym czasie, który zrozumieli i oczekiwali. Otrzymałem telefon od administratora bazy danych w innej lokalizacji - mój kierownik rozmawiał ze swoim przełożonym i zamierzają wesprzeć mój projekt, który teraz da mi zasób do wykorzystania, więc nie siedzę i nie mam pojęcia, co mam. robię. To tylko połowa. Spośród wszystkich możliwych projektów zawęziliśmy go do dwóch najważniejszych do pracy. Jeśli chodzi o mój inny projekt, jak ktoś wspomniał, jestem zasadniczo głównym architektem oprogramowania, co jest wyjątkową sytuacją dla stażysty. Jeśli wszystko pójdzie przynajmniej częściowo pomyślnie, myślę, że zdobędę dużą wiedzę i doświadczenie, które mogą mi pomóc w pracy z przyszłymi pracodawcami. Na razie myślę, że mam solidne podstawy, aby zacząć badać i rozwijać swoje projekty. Jeszcze raz dziękuję za odpowiedzi od wszystkich!


title: W jaki sposób niektóre aplikacje na iPhone'a umożliwiają zakupy bez IAP?

text: Zgodnie z sekcją 11.2 Wytycznych dotyczących przeglądu App Store, aplikacje korzystające z systemu innego niż In App Purchase API (IAP) do zakupu treści, funkcji lub usług w aplikacji zostaną odrzucone. Różne aplikacje, takie jak JetSetter, Gilt i Kayak, obejmują przepływy zakupów w aplikacji, które bezpośrednio zbierają informacje o karcie kredytowej lub używają UIWebView, aby skierować użytkownika do witryny innej firmy w celu zakupu towarów i usług. Jakie postanowienie zezwala na to aplikacjom i jakie są ograniczenia w kupowaniu fizycznych towarów i usług w aplikacji na iPhone'a bez korzystania z IAP?


title: Jak bardzo zależny od Richa Hickeya jest Clojure?

text: Właśnie zadała mi to pytanie moja firma, która inwestuje w aplikację Clojure i nie miałam dobrej odpowiedzi? Czy ktoś, z całą powagą, może mi powiedzieć, co by się stało z Clojure, gdyby Rich opuścił projekt?


title: Potrzebujesz podejścia typu „dziel i rządź” w celu przepisania małych narzędzi typu open source

text: Preambuła (Pomiń, jeśli nie lubisz czytać) Uczę się C/C++ w szkole już od roku i wszystkie zadania z książki, po przeczytaniu rozdziałów, nie były zbyt trudne do wykonania. Niektóre przykłady programów, które napisałem, to abstrakcyjne typy danych, takie jak drzewa binarne, kolejki, stosy, listy i inne typy programów to wyszukiwanie palindromu, szyfrowanie i deszyfrowanie plików i inne podobne programy pierwszego roku. Jak już wspomniałem, po przeczytaniu rozdziałów mogłem z łatwością zaimplementować i zrozumieć algorytmy używane do rozwiązywania wielu problemów. Więc czuję się dobrze ze składnią i logiką tych małych, łatwych do opanowania problemów. Tło (możesz pominąć tę część) Przygotowując się do przejścia na UCSD jesienią, zainstalowałem Linuksa na moim komputerze i przerzuciłem się na używanie Vi – zdecydowanie zmiana z Visual Studio. Aby zachować trzeźwość umysłu i zapuścić się w rzeczywiste programy, postanowiłem pobrać źródło słynnego narzędzia konsoli Linux o nazwie Wget (http://www.gnu.org/software/wget/), z zamiarem ponownego napisanie programu w wersji obiektowej w C++. Wyzwanie, przed którym stoję, polega na tym, że program, będąc prostym narzędziem jednozadaniowym, wciąż jest ogromny, gdy patrzy się na kod. ...Pytanie (TEGO NIE MOŻNA pominąć) Jak zacząć patrzeć na program, którego nie napisali i studiować go, aby spróbować go przepisać, zmienić, itp.? Wydaje mi się, że szukam porady/wskazówki na temat podejścia typu „dziel i rządź” do studiowania programu napisanego przez innych ludzi, aby spróbować go napisać od nowa. Rozumiem, że ogromne programy, takie jak OpenOffice, jądro Linuksa, Gnome itp., nie poddają się myśleniu typu „przepiszę je od nowa”. Ale wyobrażam sobie, że małe narzędzia. Dziękuję za przeczytanie, mam nadzieję, że zadałem przemyślane pytanie i mam nadzieję, że wywoła ono przydatne odpowiedzi, które mogą być przydatne również dla innych.


title: Wydarzenie, które się podnosi – czy jest zbyt skomplikowane?

text: Mam mały problem. Piszę system ładowania i buforowania zasobów, w którym użytkownik może zażądać zasobu i ustawić wywołanie zwrotne, które ma być wywoływane, gdy zasób jest ładowany (i/lub czekać na zakończenie ładowania). Prowadzi to do takiego kodu: var waitobj=Loader.RequestObject("foo"); waitobj.LoadFinished+=deleguj{ Bar(); }; Jednak ponieważ zasoby są buforowane, wywołanie `RequestObject` może faktycznie zakończyć się synchronicznie. Oznacza to, że po ustawieniu wywołania zwrotnego żądanie jest już zakończone, a wywołanie zwrotne nigdy nie zostanie wywołane. Wymyśliłem sprytną sztuczkę: po prostu sprawdźmy stan żądania w samym dodawaniu zdarzeń! zdarzenie publiczne LoadFinishedHandler LoadFinished { add { if(Finished) value(); w przeciwnym razie m_LoadFinished+=wartość; } } To wywoła funkcję zwrotną bez względu na wszystko... ale moi współpracownicy powiedzieli, że ta metoda jest zbyt skomplikowana i nikt nie będzie w stanie utrzymać tego kodu. I tak podoba mi się ten trik, ale jestem oczywiście stronniczy. Jak myślisz, czy ta sztuczka jest zbyt sprytna dla jej dobra?


title: Czy dowody są warte wysiłku?

text: Kupiłem de facto książkę do nauki o strukturach danych i algorytmach (CLRS). Książka jest co prawda całkiem dobra, ale osobliwość tkwi w dowodach. Książka pełna jest Lematów, twierdzeń, osobliwych symboli i niewyobrażalnych relacji powtarzalności, które są bardzo trudne do zrozumienia. Jestem w stanie jakoś uzyskać algorytmy, ale matematyka dyskretna po prostu nie dla mnie. Czy więc powinienem je pominąć i po prostu skoncentrować się na algorytmach?


title: Czy routing witryny z RESTful nie jest najlepszy, gdy masz bardzo długie adresy URL?

text: Dużo czytałem o RESTful, ale zawsze miałem trudności z ustaleniem, w jaki sposób użyję go z bardzo długim ciągiem zapytania. Jest to projekt wewnętrzny i nie zawsze będzie zawierał proste /someAction lub someController/12/14/my-article-I-chcę-indeksowane. Nie martwię się o SEO, ponieważ aplikacji nie ma w Internecie. Moje ciągi zapytań to długie zestawy ?somevar=123456&x=4785&y=394958....... Większość przykładów REST, które widziałem, dotyczy SEO i prostych aplikacji internetowych, takich jak blog, może CMS. Czy REST nie jest najlepszą praktyką w sytuacji, gdy długie adresy URL z dużą ilością zmiennych w ciągu zapytania są normą? Oto przykład tego, co wydaje mi się nie-RESTful: http://www.target.com/s?searchTerm=bicycle&category=0%7CAll%7Cmatchallpartial%7Call+categories&lnk=snav_sbox_bicycle Czy ten link jest przykładem złej praktyki i projekt? Nie jest to bardzo długi adres URL, ale pokazuje, że nie wszyscy używają REST, jeśli rozumiem REST. Znam powody REST, ładne adresy URL, adresy URL, które można zhakować itp. Chciałbym dobrze zaprojektować moją aplikację, ale czuję, że zostałaby stworzona we wzór, którego nie potrzebuję. Jaka jest tutaj najlepsza praktyka?


title: Rodzaje diagramów ER

text: Obecnie biorę klasę do projektowania baz danych i używamy stylu diagramu ER zaprojektowanego przez Petera Chena. Mam kilka problemów z tym stylem: * Klucze w związkach nie wydają się realistyczne. W praktyce klucze syntetyczne, takie jak „orderid”, wydają się być używane w prawie wszystkich tabelach, w tym w tabelach asocjacyjnych, ale diagramy w stylu Chen mocno faworyzują klucze złożone (table1key, table2key). * Nie ma notacji dla typu danych. * Kształt rombu dla skojarzeń jest okropny i tworzy zagracony diagram. Ogólnie wydaje się, że trudno jest uchwycić pewne relacje z systemem Chen. Jakiego stylu ERD, jeśli w ogóle, używasz? Co cieszyło się największą popularnością w Twoich miejscach pracy? Jakich narzędzi użyłeś lub używasz do tworzenia tych diagramów?


title: Czy ten przykład wzorca metody fabrycznej narusza otwarte-zamknięte?

text: We wzorcach projektowych Head-First używają przykładu sklepu z pizzą, aby zademonstrować wzorzec metody fabrycznej. public abstract class PizzaStore { public Pizza orderPizza(String type) { Pizza pizza; pizza = utwórzPizzę(typ); pizza.przygotowanie(); pizza.piecz(); pizza.wytnij(); pizza.pudełko(); zwrot pizzy; } abstract Pizza createPizza(String type) } public class NYPizzaStore extends PizzaStore { Pizza createPizza(String item) { if (item.equals("ser") { return new NYStyleCheesePizza(); } else if (item.equals("veggie" )) { return new NYStyleVeggiePizza(); } else if (item.equals("clam")) { return new NYStyleClamPizza(); } else if (item.equals("pepperoni")) { return new NYStylePepperioniPizza(); } else return null;} } Nie rozumiem, jak ten wzorzec nie narusza open-close.Co jeśli potrzebujemy wołowiny Pizza, to musimy edytować instrukcję if w klasie NYPizzaStore.


title: c#/java lub c++ (pytanie osobiste)

text: Przede wszystkim nie jest to porównanie języków. Zadałem więc pytanie, zanim powiedziałem, że jestem początkującym programistą (najtrudniejszą rzeczą, jaką można zrobić, jest serwer/klient czatu, kiedy czytałem o wątkach, i używałem twitter api, co jest jakoś bardzo łatwe). Moim celem jest stać się lepszym programistą i zrozumieć więcej rzeczy, ponieważ mam zaledwie 14 lat. Przeczytałem, że nauka C++ pozwoli mi zrozumieć więcej rzeczy związanych z programowaniem i pomoże mi w przyszłości stać się lepszym programistą, ale myślę, że w tej chwili poprawiam się w c#, tworzę więcej programów i cieszę się... czy ty myślę, że powinienem kontynuować i stać się lepszym w C# i Javie i zapomnieć o nauce C++, dopóki nie pójdę na uniwersytet i będę zmuszony uczyć się C++? Osobiście uważam, że tracę czas w c++, skupiając się bardziej na rzeczach teoretycznych niż na samym programowaniu.


title: JS Framework dla stron obciążających serwer i/lub stron klienckich

text:
Czytałem artykuły takie jak ten, które wskazują, że tworzenie stron internetowych ewoluowało do korzystania z frameworków JS. Tam, gdzie pracuję, mamy ogromną witrynę internetową z wieloma istniejącymi aplikacjami internetowymi, które są już ustanowione i obciążają serwer. Jeden artykuł, który przeczytałem, powiedział, że manipulacja DOM/metoda jQuery prowadzi do nienadającego się do utrzymania kodu spaghetti i że powinieneś dążyć do korzystania z frameworka JS MV*. Czasami jednak mam po prostu dość prostą listę elementów generowanych z serwera; coś takiego:
show

jeden

 //js $(".shower ").on("kliknij", funkcja () { $(".hider[data-id=" + $(this).data("id") + "]").show(); }); ...i to byłoby w dużej mierze rozszerzenie JS na tej stronie. Według zwolenników frameworka MV*, potrzeba odwoływania się do określonych klas lub atrybutów w JS jest problemem i zamiast tego należy używać modeli. Wydaje się jednak, że dodanie ogromnej biblioteki do tworzenia bogatych aplikacji do obsługi dość trywialnych manipulacji i animacji DOM wydaje się przesadą. Czy istnieje framework JS, który wypełnia lukę między kompletnymi frameworkami stosu front-end a ściśle powiązanym HTML/JS? Jeśli nie, jak mógłbym napisać taki kod, aby uniknąć tego sprzężenia? Dodatkowo, czy jest jakiś powód, aby mocno naciskać na przejście na taki framework dla istniejących aplikacji mocno obciążających serwer (szczególnie w przypadkach, gdy musimy obsługiwać wyłączony JavaScript)?


title: Czy popularna witryna, taka jak www.google.com, jest obsługiwana przez jeden komputer?

text: W podstawowej sieci mówimy o serwerach DNS, które przekształcają adresy czytelne dla człowieka (www.google.com) na rzeczywisty adres IP. O ile rozumiem, przynajmniej używając podstaw, adres IP odnosi się do pojedynczego urządzenia (powiedzmy routera). Z pewnością www.google.com nie może obsługiwać jeden komputer? W jaki sposób www.google.com jest dystrybuowany na wielu serwerach?


title: Czy to źle mieć ciągi HTML w obiektach PHP, czy jest to złe tylko w kontrolerach?

text:
Zawsze myślałem, że w typowym projekcie MVC złą praktyką jest budowanie i łączenie ciągów HTML w dowolnym pliku PHP lub klasie, która nie jest ściśle szablonem. Pracuję nad dużym projektem ze ścisłymi wytycznymi i chociaż nie wolno umieszczać żadnego kodu HTML w _kontrolerze_ PHP, uczciwą grą jest posiadanie podobiektów PHP, które mogą generować wiele ciągów kodu HTML, które następnie otrzymują przekazane do szablonu. Te „podobiekty” zawierają dodatkową logikę, która może zmienić kod HTML w zależności od warunków. **Tak więc moje 2 główne pytania to:** 1. Czy to jest uważane za MVC? 2. Czy te przedmioty są uważane za część Widoku, czy też są frankensteinem Modelu i Widoku? **Przykład:** <?php /* controller.php */ class KittenController { protected $view = 'view.html'; renderowanie funkcji publicznej (Żądanie $żądanie) { $dane = $this->getDynamicData(); // pobierz trochę danych $object = $this->getObject(); // pobierz obiekt PHP $this->setField('foo', $data['bar']); $this->setField('baz', $object->render()); } } <?php /* object.php */ class Object { public function render() { $html = ''; $html .= '
'; if ($this->hasDuck()) { $html .= '
Mam kaczkę...
'; } else { $html .= '
Nie ma tu kaczki...
'; } $html .= '
'; zwróć $html; } }
 [[foo]]
  [[baz]]


title: Jaki jest najlepszy sposób przechowywania scentralizowanych danych do (i z) tłumaczenia?

text: Rozpoczynamy proces internacjonalizacji naszego oprogramowania. Aby to zrobić, napiszemy serię filtrów, aby przekonwertować wszystkie nasze różne pliki zasobów (resx, tekst, zasoby java itp.) do wspólnego formatu. Będziemy wtedy wysyłać pliki xliff do tłumaczenia. Po przetłumaczeniu proces będzie przebiegał w odwrotnej kolejności. Chcielibyśmy, aby centralny magazyn był na bieżąco z wszelkimi zmianami, które programiści wprowadzają do plików zasobów, najlepiej przy użyciu mrówki podczas procesu budowania, zachowując wiedzę o tym, która gałąź lub wersja oprogramowania korzysta z jakich zasobów. Chcielibyśmy również śledzić, z której wersji oprogramowania zostały pobrane zasoby, z których są wysyłane do tłumaczenia, daty wysłania i odebrania plików oraz kto je przetłumaczył. Pomysł polega na tym, że zastosujemy tłumaczenia do właściwego oddziału, możemy w przyszłości wziąć diffy z magazynu centralnego, aby wysłać częściowe zasoby do tłumaczeń i możemy raportować ilość tłumaczeń w danym momencie. Rozważamy przechowywanie wszystkich tych danych w repozytorium svn jako drzewo xliffów, być może rozgałęzione w lustrze głównego repozytorium kodu. Czy to wystarczy, czy lepiej byłoby po prostu użyć bazy danych do przechowywania tych informacji?


title: Sprawdzanie na poziomie javascript vs sprawdzanie w PHP?

text: Konfiguracja: Mamy formularz z domyślnymi wartościami tekstowymi obecnymi w samym polu tekstowym, który "znika", gdy kliknę na nie i wprowadzę wartość (nie, jeśli nie wprowadzę wartości). Obecnie wartość „default” lub wartość wprowadzona przez użytkownika jest wysyłana POST do skryptu PHP. Czy powinienem sprawdzić kod javascript, czy przesyłana wartość jest domyślna i ustawić ją na "" (pusty ciąg) LUB powinienem wykonać to sprawdzenie w PHP, gdzie będę musiał sprawdzić, czy jest to "" LUB jeśli jest do wartości domyślnej. Co jest bardziej wydajne, gdy skrypt JavaScript czyści dane przed wysłaniem ich do PHP, czy też PHP wykonuje samo sprawdzenie? Jednym z powodów, dla których warto zachować to w PHP (choć nie jest to dla nas obecnie brane pod uwagę) jest to, że możemy wyświetlać domyślne etykiety tekstowe w wielu językach i sprawdzać, czy użytkownik zostawił je puste. Wyobrażam sobie, że byłoby to łatwiejsze w PHP?


title: Jak powinienem ocenić rozwiązanie bazodanowe dla aplikacji do obsługi dużych ilości danych?

text: **_Background_** Otrzymałem zadanie napisania aplikacji, która będzie połączeniem zarządzania dokumentami i zapasami w VB.net, która będzie używana do przechowywania obrazów dokumentów w formatach TIFF, PDF, XPS, TXT, DOC, PPT i tak dalej jako dane binarne, które można pobrać do przeglądania, drukowania i ewentualnego OCR, które można przeszukiwać, wraz z metadanymi, takimi jak nadawca, odbiorca, typ dokumentu, data, źródło itp. Tak więc tabela prawdopodobnie wyglądałaby tak: DOC_NAME , DOC_DATE, NOTES, ... DOC_BINARY (w którym zostanie umieszczony aktualny dokument) **_Help Please_** Potrzebuję pomocy w zrozumieniu, jak ocenić opcje mojej bazy danych. Moim zmartwieniem jest znalezienie rozwiązania bazodanowego, które nie będzie niestabilne z powodu ograniczeń rozmiaru, rekordów i wydajności. Niektóre opcje to MS_SQL, SQL Express, SQLite, mySQL i Access. Teraz mogę praktycznie wyeliminować Access od razu, ponieważ jest po prostu zbyt ograniczający i nie skalowalny. Mogę dalej wyeliminować SQL Express ze względu na limit 2 GB i ponownie skalowalność. Więc wierzę, że pozostawia mi to MS_SQL, SQLite i mySQL (uwaga, jestem otwarty na alternatywy). I tu potrzebuję pomocy w zrozumieniu, jak oceniać te bazy danych. Celem jest, aby wszystkie dane znajdowały się w jednym miejscu (w jednym pliku), co ułatwi tworzenie kopii zapasowych i przenoszenie. W przypadku małej objętości prawie każde rozwiązanie wytrzyma przez jakiś czas, ale moim celem jest myślenie z wyprzedzeniem i upewnienie się, że jest w stanie wytrzymać również duże zużycie dużej objętości. Kolejną kwestią jest interoperacyjność z .NET i stabilność takiego kodu w celu uniknięcia błędów i wycieków pamięci. Jak mam ocenić opcje bazy danych w tym scenariuszu?


title: Tworzenie podklas w celu uniknięcia długości linii

text: Standardowa długość linii kodu to 80 znaków na linię. Jest to akceptowane i przestrzegane przez większość programistów. Pracuję na maszynie stanowej o charakterze i jest dla mnie konieczne, abym za tym podążał. Mam cztery klasy, które przekraczają ten limit. Mogę podzielić każdą klasę na dwie kolejne, a następnie uniknąć limitu długości linii. klasa Stand klasa Walk klasa Punch klasa Crouch Nowe klasy to _StandLeft_ , _StandRight_ i tak dalej. _Stand_ , _Spacer_ , _Punch_ i _Crouch_ byłyby wówczas klasami abstrakcyjnymi. Pytanie, czy istnieje limit długości drzewa hierarchii, czy to zależy od przypadku.


title: Często programista jest proszony o utrzymanie kodu w innym języku?

text: Zostałem zatrudniony około rok temu do pisania kodu w Javie (właściwie do przepisania starszej bazy kodu - podejrzewam, że firma byłaby zadowolona bez względu na to, w jakim języku to piszę). Jeszcze wczoraj dostałem zadanie naprawiania błędów w programie VB6 - nigdy wcześniej nie korzystałem z Visual Basica. Moje pytanie brzmi, czy często zdarza się, że programista jest proszony o utrzymywanie/debugowanie/naprawianie kodu w języku całkowicie mu nieznanym? Powinienem wyjaśnić, nie mam z tym problemu, po prostu zastanawiam się, czy jest to powszechne doświadczenie dla programistów korporacyjnych.


title: Jak źle jest mieć dwie metody o tej samej nazwie, ale o różnych podpisach w dwóch klasach?

text: Mam problem projektowy związany z interfejsem publicznym, nazwami metod oraz zrozumieniem mojego API i kodu. Mam dwie klasy w ten sposób: class A: ... functioncollision(self): .... ...class B: ....function _collision(self, another_object, l, r, t, b): . ... Pierwsza klasa ma jedną metodę publiczną o nazwie _collision_ , a druga ma jedną prywatną metodę o nazwie __collision_. Te dwie metody różnią się typem argumentu i liczbą. Jako przykład powiedzmy, że __kolizja_ sprawdza, czy obiekt koliduje z innym obiektem w określonych warunkach _l_ , _r_ , _t_ , _b_ (zderzenie po lewej, prawej stronie itd.) i zwraca _prawda_ lub _fałsz_. Z drugiej strony publiczna metoda _collision_ rozwiązuje wszystkie kolizje obiektu z innymi obiektami. Te dwie metody mają tę samą nazwę, ponieważ myślę, że lepiej jest unikać przeciążania projektu różnymi nazwami dla metod, które robią prawie to samo, ale w różnych kontekstach i klasach. Czy jest to wystarczająco jasne dla czytelnika, czy powinienem zmienić nazwę metody?


title: W jaki sposób moduł odśmiecania pamięci zapobiega skanowaniu całej pamięci przy każdym zbieraniu?

text: Niektóre (przynajmniej Mono i .NET) garbage collectors mają obszar pamięci krótkotrwałej, który skanują często, oraz dodatkowy obszar pamięci, który skanują rzadziej. Mono nazywa to żłobkiem. Aby dowiedzieć się, które obiekty można usunąć, skanują wszystkie obiekty, zaczynając od korzeni, stosu i rejestrów, i usuwają wszystkie obiekty, do których już się nie odwołują. **Moje pytanie brzmi, jak zapobiegają skanowaniu całej używanej pamięci podczas każdej kolekcji?** W zasadzie jedynym sposobem, aby dowiedzieć się, które obiekty nie są już używane, jest przeskanowanie wszystkich obiektów i wszystkich ich odniesień. Uniemożliwiłoby to jednak systemowi operacyjnemu wymianę pamięci, nawet jeśli nie jest ona używana przez aplikację i wydaje się, że jest to ogromna ilość pracy, którą należy wykonać, również w przypadku „Kolekcja przedszkola”. Nie ma wrażenia, że dużo wygrywają, korzystając z pokoju dziecięcego. **Czy czegoś mi brakuje, czy też garbage collector faktycznie skanuje każdy obiekt i każde odniesienie za każdym razem, gdy zbiera?**


title: Jak można uczyć OO bez odwoływania się do fizycznych obiektów świata rzeczywistego?

text: Pamiętam, że przeczytałem gdzieś, że pierwotne koncepcje stojące za obiektami otwartymi polegały na znalezieniu lepszej architektury do obsługi przesyłania danych między wieloma systemami w sposób, który chroniłby stan tych danych. To prawdopodobnie kiepska parafraza, ale zastanawiam się, czy istnieje sposób na nauczanie OO bez analogii z obiektami (Rower, Samochód, Osoba itp.), a zamiast tego skupiam się na aspektach przesyłania wiadomości. Jeśli masz artykuły, linki, książki itp., byłoby to pomocne.


title: Implementacja rozproszonego Semaphore dla obciążenia AWS

text: Mamy bramkę przesyłania wiadomości w AWS (Amazon Cloud), która składa się z wielu węzłów (serwerów Linux) odpowiedzialnych za odbieranie, routing, wysyłanie i eskalowanie wiadomości (e-maile, SMS-y i połączenia głosowe). Wszystkie komunikują się z bazą danych MySQL zaplecza na dedykowanej maszynie. Co kilka minut uruchamiamy skrypt konserwacyjny - eskalując nieaktualne wiadomości itp. Problem polega na tym, że nie powinniśmy uruchamiać konserwacji na wielu węzłach w tym samym czasie - dlatego chcę zaimplementować jakiś rodzaj _Rozproszonego semafora_, który zostanie podniesiony przez pierwszy węzeł i jeśli jakikolwiek inny węzeł spróbuje uruchomić skrypt przed zakończeniem pierwszego, powinien po prostu wyjść. W tej chwili uruchamiamy skrypt tylko na jednym węźle i mamy wyłączone zadanie cron na pozostałych, ale wolimy mieć wszystkie węzły z tą samą konfiguracją. Na jednym hoście prawdopodobnie użyłbym pliku blokady, ale jak to zrobić na wielu hostach? Nie mają współdzielonego systemu plików i właściwie jedyną wspólną rzeczą jest baza danych MySQL. Ponadto - jeśli proces lub węzeł umrze w połowie przetwarzania, semafor powinien ostatecznie zwolnić lub przekroczyć limit czasu. Wolę używać bazy danych jako posiadacza Semaphore, ale jestem też całkiem zadowolony z korzystania z każdej innej usługi AWS. FWIW Skrypt jest napisany w Pythonie. Nie żebym uważał, że to ma znaczenie... Dzięki za wszelkie pomysły!


title: Jakie książki nieprogramistyczne powinien przeczytać programista, aby rozwinąć umiejętności programowania/myślenia?

text: Jest wiele pytań o to, jakie książki o programowaniu powinny znaleźć się na półce programisty. Co powiesz na książki niezwiązane z programowaniem, które pomogą ci stać się lepszym programistą lub deweloperem? Interesujące byłoby również wiedzieć, dlaczego mieliby pomóc. Moim pierwszym wyborem byłaby „Sztuka wojny” Sun Tzu (choć banał), ponieważ jasno pokazała, że sukces każdego projektu zależy od siły jego najsłabszego ogniwa (a wojna to duży projekt).


title: Implementacja testowania instancji w Java, C++, C#

text: Dla ciekawości, a także dla zrozumienia, co one pociągają za sobą w programie, jestem ciekawy, jak działa testowanie instancji (`instanceof`/`is`/using `dynamic_cast` w c++). Próbowałem go wygooglować (szczególnie dla javy), ale jedyne strony, które się pojawiają, to samouczki dotyczące korzystania z operatora. Jak implementacje różnią się w tych językach? Jak traktują klasy z identycznymi podpisami? Ponadto wwierciło mi się w głowę, że testowanie instancji jest oznaką złego projektu. Dlaczego dokładnie tak jest? Kiedy ma to zastosowanie, instanceof powinno być nadal używane w metodach takich jak `.equals()` i takie, prawda? Myślałem o tym również w kontekście obsługi wyjątków, ponownie szczególnie w Javie. Kiedy masz wiele instrukcji „catch”, jak to działa? Czy to testowanie wystąpienia, czy jest po prostu rozwiązane podczas kompilacji, do którego trafi każdy zgłoszony wyjątek?


title: Jakie jest proste wyjaśnienie wyrażenia reinterpret_cast?

text: Widzę, że jest to dyrektywa kompilatora, która instruuje kompilator, ale co to znaczy?


title: Dlaczego pliki wykonywalne zależą od systemu operacyjnego, ale nie od procesora?

text: Jeśli napiszę program w C i skompiluję go do pliku `.exe`, plik `.exe` zawiera surowe instrukcje maszynowe do CPU. (Myślę). Jeśli tak, w jaki sposób mogę uruchomić skompilowany plik na dowolnym komputerze z nowoczesną wersją systemu Windows? Każda rodzina procesorów ma inny zestaw instrukcji. Więc jak to możliwe, że każdy komputer z odpowiednim systemem operacyjnym może zrozumieć instrukcje zawarte w moim pliku `.exe`, niezależnie od fizycznego procesora? Ponadto często w witrynach internetowych na stronie pobierania niektórych aplikacji dostępne są pliki do pobrania dla systemów Windows, Linux i Mac (często dwa pliki do pobrania dla każdego systemu operacyjnego, dla komputerów 86- i 64-bitowych). Dlaczego nie ma o wiele więcej pobrań dla każdej rodziny procesorów?


title: Jaka jest różnica między we/wy opartym na kanale a we/wy opartym na strumieniu w java?

text: Jaka jest różnica między wejściem opartym na strumieniu a wejściem opartym na kanale? Java API zapewnia zarówno oparte na strumieniu w pakiecie „java.io”, jak i oparte na kanałach w pakiecie „java.nio”. Który z nich ma lepszą wydajność i mniej błędów w czasie wykonywania?


title: Jak ukryć kod Pythona przed użytkownikami?

text: Zajmuję się tworzeniem płatnej aplikacji w Pythonie. Nie chcę, aby użytkownicy widzieli kod źródłowy lub go dekompilowali. Jak mogę wykonać to zadanie, aby ukryć kod źródłowy przed użytkownikiem, ale uruchomić go idealnie z taką samą wydajnością.


title: Jak przeprowadzić dobry warsztat techniczny

text: Obecnie staram się zorganizować mały warsztat dla kilku osób, aby wzbudzić zainteresowanie androidem. Zamierzam przeprowadzić praktyczne warsztaty, które przeprowadzą wszystkich przez różne komponenty i funkcje, tworząc aplikację. Jednym ze sposobów, w jaki mogę to zrobić, jest wcześniejsze napisanie aplikacji, udostępnienie jej wszystkim, a następnie próba ponownego opracowania w grupie tego samego kodu, rozumiejąc niuanse. Jednak nie jestem pewien, jak dobrze się to sprawdzi. Jestem ciekaw innych metodologii lub pomysłów, które pomogą mi uczynić ten warsztat owocnym i angażującym dla wszystkich. Domyślam się, że niektórzy z was mają doświadczenie z podobnymi rzeczami, czy moglibyście zasugerować, jaki byłby dobry sposób, aby się do tego zabrać? PS - Używanie prawdopodobnie nieistotnych tagów, ponieważ moja reputacja nie pozwala mi na tworzenie nowych.


title: Gdybyś mógł zadać pytanie kandydatowi do testu Turinga, co by to było?

text: Jak odróżniłbyś człowieka od maszyny?


title: Zoptymalizować strategie analizowania XML?

text: Szukam ogólnych wskazówek dotyczących optymalizacji i wytycznych dotyczących parsowania xml. Jedną ze strategii optymalizacji jest oczywiście wybór „właściwego” parsera. Szczegółowe porównanie dostępnych parserów dla ios można znaleźć tutaj http://www.raywenderlich.com/553/how-to-chose-the-best-xml-parser-for-your-iphone-project. Jednak obecnie próbuję zbadać ogólne wytyczne i wskazówki dotyczące optymalizacji według ładunków, aby jak najlepiej zwiększyć wydajność. To pytanie jest podobne do (pytanie, które zamieściłem w kontekście ios), ale nie mam wystarczającej odpowiedzi. Więc to pytanie nie dotyczy żadnego konkretnego języka programowania.


title: Zmiana klas CSS, gdy różne ciągi są wyświetlane w elemencie tekstowym za pomocą jQuery

text: Zastanawiam się tylko, czy ta metoda byłaby możliwa przy użyciu jQuery HTML i PHP. Zasadniczo mam system filtrowania, w którym wymienione są produkty, niektóre mają różne wartości atrybutów, na przykład Hatchback. Element tekstowy, który przechowuje te echo PHP, ma również klasę css, która implementuje ikonę. Zastanawiam się tylko, czy mogę zmienić klasy, które są dodawane do elementu html, po prostu patrząc na ciąg? Na przykład, jeśli ciąg wyświetla „Odbiór”, to jQuery zmienia klasę i dodaje tę powiązaną z ciągiem „Odbiór”? Dzięki przepraszam, jeśli to trochę zagmatwane, w razie potrzeby mogę wyjaśnić więcej.


title: Projekt rozwidlenia w procesie Github

text: Na Github jest projekt, który najbardziej mi się podoba i który chcę wykorzystać. Jest kilka rzeczy, które chcę zrobić inaczej/usunąć, a które nie mają sensu dla tego, czego chcę/potrzebuję. Chcę też dodać kilka rzeczy. Jak rozumiem, powinienem rozwidlić projekt i mogę wprowadzić dowolne zmiany i odłożyć z powrotem do mojego rozwidlenia. Stamtąd chcę również od czasu do czasu wprowadzać do mojego widelca zmiany z oryginalnego projektu, aby uzyskać najnowsze poprawki błędów/funkcje. Czy jestem poza bazą, jak sądzę, że to powinno działać? Jak wprowadzi zmiany z oryginalnego projektu?


title: Dostarczenie szacunków i oczekiwań klienta?

text: Kiedy klient prosi o oszacowanie, ile czasu zajęłoby opracowanie różnych sekcji aplikacji, czy najlepiej podać mu łączną kwotę lub ile zajęłoby to dla każdej sekcji? Czy lepiej/częściej jest podawać zakres godzin/dni, czy tylko jedną liczbę? Czy uważasz, że większość klientów uważa, że jeśli programista mówi, że powinno to zająć 50 godzin, to powinni być rozliczani za 50 godzin? Jeśli powiem, że zajęłoby to 50, a faktycznie 60, czy powiem im z góry, że przechodzę na moje oszacowanie, czy po prostu naliczam to, co było pierwotnie podane?


title: Sugestie dotyczące architektury wieloprojektowego „intranetu” z wieloma bazami danych

text: Oto sytuacja, którą odziedziczyłem: 1. Mamy około 10 stron internetowych (formularzy internetowych Asp.net), z których każda ma własną bazę danych. 2. Każda z tych baz danych zawiera pewne dane specyficzne dla witryny, a każda z nich ma jakąś formę tabeli użytkownika, która będzie mapowana na tak zwaną usługę użytkownika. 3. Usługa użytkownika to po prostu kolejna strona internetowa, która ma bazę danych z jedną tabelą (użytkownik), która ma około 3 różnych unikalnych identyfikatorów użytkownika: identyfikator UserId, identyfikator aplikacji wewnętrznej (aplikacja innej firmy, potrzebna do zmapowania do niej ) oraz nazwę użytkownika. 4. We wszystkich różnych witrynach bazy danych mają tabelę User, czasami zwaną Person, Student lub jakkolwiek inną, i są one niespójne, na które UserService.User.[IdentifyingColumn] są mapowane. Problem: Dochodzi do punktu, w którym te aplikacje muszą teraz udostępniać sobie nawzajem pewne dane, i widzę, że ta potrzeba rośnie, ponieważ działy są jeszcze bardziej usprawnione. Przy tej obecnej konfiguracji jest dużo przeskoków, aby uzyskać odpowiednią kolumnę UserId, aby dopasować ją do prawej kolumny UserId w UserService. Zdezorientowany? Ja też.. **Pytanie:** Jak podejść do rozwiązania problemu? Mam kilka różnych pomysłów, niektóre podobają mi się bardziej niż inne, ale aby je zrealizować, potrzebuję solidnych korzyści, które mogę wnieść do szefa IT, a także uzasadnić czas poświęcony na programowanie na przepisanie. Pomysł 1: Stwórz prawdziwą aplikację intranetową. Jedna aplikacja internetowa z jedną bazą danych. W ten sposób wszyscy żyją w tym samym projekcie, a udostępnianie danych między różnymi działami jest bardzo proste i szybkie. Pomysł 2: Stwórz pole identyfikujące „Klucz główny”, które będzie końcem wszystkiego do identyfikacji użytkownika. Udostępnij ten klucz w każdej bazie danych, aby nie było żadnych dziwnych mapowań, a różne witryny mogą się ze sobą komunikować. Dla mnie ten rozwiązuje jeden problem, mapując każdy db do następnego. Wciąż jest bardzo pofragmentowana, a ponowne wykorzystanie kodu jest bardzo niewielkie. Pomysł 3: Pracuj z nim w obecnej formie, próbując kontynuować obecną modę wielu małych baz danych i witryn. **Którą z powyższych opcji sugerowałbyś i dlaczego?**


title: Dekodowanie Base64 i deszyfrowanie SH1 przykładu wartości Sec-WebSocket-Accept z Websocket RFC

text: Planuję zaimplementować protokół Websocket i obecnie uczę się, jak należy ustrukturyzować nagłówki uzgadniania. Zgodnie z tym linkiem http://datatracker.ietf.org/doc/rfc6455/?include_text=1 > Aby udowodnić, że uścisk dłoni został odebrany, serwer musi pobrać dwie > informacje i połączyć je w celu utworzenia odpowiedzi. Pierwsza > informacja pochodzi z |Sec-WebSocket-Key| pole nagłówka > w uzgadnianiu klienta: > > Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== > > Dla tego pola nagłówka serwer musi przyjąć wartość (tak jak w polu > nagłówek, np. zakodowany base64 [RFC4648) ] minus wszelkie początkowe > i końcowe białe znaki) i połącz to z > Globalnie Unikalnym Identyfikatorem (GUID, [RFC4122]) "258EAFA5-E914-47DA- > 95CA-C5AB0DC85B11" w formie ciągu, który jest mało prawdopodobny, aby być używany przez > punkty końcowe sieci, które nie rozumieją protokołu WebSocket. Skrót > SHA-1 (160 bitów) [FIPS.180-3], zakodowany w base64 (patrz sekcja 4 w > [RFC4648]) tej konkatenacji jest następnie zwracany w > uzgadnianiu serwera. >> Konkretnie, jeśli tak jak w powyższym przykładzie, |Sec-WebSocket-Key| pole nagłówka > miało wartość "dGhlIHNhbXBsZSBub25jZQ==", serwer połączy > ciąg znaków "258EAFA5-E914-47DA-95CA-C5AB0DC85B11" w celu utworzenia ciągu > "dGhlIHNhbXBsZSBub25jZQ==955-B4 - EABDA5-E0" Serwer > wziąłby wtedy ten skrót SHA-1, podając wartość 0xb3 0x7a 0x4f 0x2c > 0xc0 0x62 0x4f 0x16 0x90 0xf6 0x46 0x06 0xcf 0x38 0x59 0x45 0xb2 0xbe 0xc4 > 0xea. Ta wartość jest następnie kodowana base64 (patrz sekcja 4 [RFC4648]), aby > dać wartość „s3pPLMBiTxaQ9kYGzzhZRbK+xOo=”. Ta wartość zostanie > powtórzona w |Sec-WebSocket-Accept| pole nagłówka. Więc kiedy faktycznie dekoduję "s3pPLMBiTxaQ9kYGzzhZRbK+xOo=" w dekoderze base64 na dekoderze, daje mi to @:e^qlk Co nie sądzę, że zostanie odszyfrowane do oryginalnej wartości przy użyciu SHA-1 poprawnie. Do tej pory rozumiem, że 1) Serwer otrzymał wartość Sec-WebSocket-Key od klienta i połączyłem ją z identyfikatorem GUID wygenerowanym z serwera Więc wygląda to tak: dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11 2) wtedy serwer stosuje SHA -1 i kodowanie base64, a kluczem staje się: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= do odesłania do klienta. Aby więc zmienić wartość Websocket-accept na oryginalną wartość "dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11", muszę zdekodować powyższą wartość za pomocą Base64 i odszyfrować ją za pomocą sha-1 i muszę otrzymać oryginalną wartość plecy. Jednak kiedy faktycznie próbuję, daje mi to dziwną wartość, o której wspomniałem powyżej. Czy mógłbyś mnie poprawić, którą część robię źle? Dziękuję Ci.


title: Wzorce / algorytmy replikacji danych

text: Mam szereg systemów, które muszą być dystrybuowane do zmiennej liczby węzłów ( _co najmniej dwa, ale bardziej prawdopodobne 8 - 10_ ). Ze względu na wydajność każdy element stanu musi być utrzymywany w pamięci i replikowany do co najmniej dwóch węzłów, chociaż wraz ze wzrostem zapotrzebowania może być replikowany do większej liczby węzłów, zgodnie z dyktatem _menedżera_. Niestety nie możemy kupić komercyjnych siatek danych, które już są w tym bardzo dobre. **Pytanie** : Zakładając, że stan jest niezmienny, jakich wzorców i/lub algorytmów mogę użyć, aby ułatwić ten proces? Dostarczyłem próbkę, aby ułatwić dyskusję, ale nie jestem z tym związany. Naprawdę!... Jestem otwarty na obranie nowego kierunku, aby sprostać tym wymaganiom. Jeśli mógłbyś wskazać mi zdjęcia lub próbki kodu, które byłyby bardzo mile widziane. W obecnej postaci jeden z węzłów będzie się autopromował i będzie organizował, kto i kiedy powinien się replikować ( _tj. menedżer_ ). **Inne założenia:** * Pozycja na liście * Systemy będą komunikować się przez TCP/IP i Multicast * Brak baz danych * Brak transferu plików... tylko tablice bajtów * Wszystkie komponenty są obecnie w C# i mogę zmienić prawie wszystko * Ostateczna spójność będzie bądź w porządku _Uwaga: Zdaję sobie sprawę, że ten przykład nie obsługuje przypadków niepowodzenia. W tym momencie pomyślałem, że to zbytnio skomplikowałoby sprawy_ ![Możliwa sekwencja](http://i.stack.imgur.com/yRCLX.png)


title: Czy istnieje dobra nazwa dla „klasycznej” platformy .NET?

text: Tak więc, ponieważ Microsoft stworzył wiele forków i gałęzi z .NET, pojawiło się kilka różnych nazw produktów: * Silverlight * .NETCore/WinRT/.Net dla aplikacji Windows Store * .NET dla Windows Phone/CoreCLR * . NET Micro Framework * .NET Compact Edition Jak jednak nazwać tradycyjną platformę .NET, którą wszyscy znamy i kochamy? Prawdopodobnie nie można go nazwać Desktop .NET, ponieważ działa również na serwerach, a to może sugerować, że używasz tego profilu klienta. .NET na PC wydaje się niezwykłe. Nie możesz po prostu powiedzieć „to jest produkt dla .NET”, ponieważ wtedy ludzie mogą założyć, że obejmuje wsparcie dla jednej z innych platform. Czy Microsoft ma oficjalną „nazwę” dla tradycyjnego .NET, który działa na komputerach z systemem Windows?


title: Jak zaprojektować korporacyjne aplikacje desktopowe dla Windows 8

text: Myślę, że rozumiem oczekiwania związane z tworzeniem aplikacji konsumenckich dla systemu Windows 8. Utwórz nowy interfejs użytkownika oparty na Metro na bazie WinRT, wdróż go u klienta za pośrednictwem Marketplace, a wszyscy wygrywają. Wydaje się dość proste. Niestety nie zajmuję się tym biznesem. Pracuję nad wewnętrznymi aplikacjami biznesowymi dla dużego przedsiębiorstwa. Obecnie używamy technologii .NET, takich jak WPF i Silverlight, w celu tworzenia bogatych interfejsów użytkownika, które można łatwo wdrożyć dla naszych użytkowników za pośrednictwem Internetu lub ClickOnce. Aplikacje mogą obsługiwać WinXP i Win7 bez zbytniego bólu głowy, a nasi programiści mogą korzystać z XAML, który jest bardzo solidną technologią interfejsu użytkownika. Wygląda na to, że WPF i Silverlight mają w tym momencie wątpliwą przyszłość, więc dalsze inwestowanie w nie jest trochę niepokojące. Jednak interfejs Metro nie wydaje się odpowiedni dla aplikacji korporacyjnych, a interfejs WinRT API jest dość ograniczony w odniesieniu do „typowych” rzeczy, które muszą robić aplikacje korporacyjne. **Jak powinienem zaprojektować moje aplikacje oparte na XAML, które są obecnie wdrażane w WinXP i Win7, aby były obsługiwane i rozwijalne w Win8?** Załóżmy na potrzeby tego pytania, że funkcje zapewniane przez HTML5 oprócz ASP.NET nie są odpowiednie dla aplikacji, które chcę stworzyć. Rozumiem, że mogę używać HTML5 w niektórych aplikacjach, ale próbuję dowiedzieć się, co powinienem zrobić, gdy to nie wystarczy. **Edytuj #1:** To jest odpowiedź na komentarz @Emmad Kareem. Zgadzam się, że Silverlight/WPF są opłacalne w krótkim okresie (2-5 lat). Jednak aplikacje, które produkujemy, mają potencjalnie bardzo długą żywotność (10-20+ lat). Zatem długoterminowa przeżywalność danej technologii jest dla nas problemem. Ponadto obawiamy się, że coraz trudniej będzie znaleźć deweloperów zainteresowanych rozwojem Silverlight/WPF, jeśli te technologie zostaną uznane przez społeczność za „martwe”. Chcę tylko zrozumieć moje opcje i podjąć decyzję z otwartymi oczami.


title: szablony php z kodeigniter

text: Obecnie zajmuję się tworzeniem aplikacji internetowej w codeigniter, a chciałbym coś zrobić w PHP/CodeIgniter gdzie mogę zrobić wspólny szablon dla osobnych sekcji strony. Myślałem, że zachowam nagłówek/stopkę w osobnych plikach php i dołączę je osobno. To, czego nie jestem pewien, to treść pod nagłówkiem i nad stopką. Ta aplikacja internetowa będzie zawierać wiele różnych stron, więc trudno mi wymyślić, jak najlepiej to zrobić.


title: Przekazywanie obiektu między różnymi handlerami lub superklasą, która zawiera większość logiki

text: Postaram się, aby było to jak najbardziej zwięzłe i konkretne, ale przepraszam, ponieważ mogę wymyślić wiele sposobów, aby to zadziałało. To pytanie może również dotyczyć obsługi procesów produkcyjnych lub wytwarzania, ale nie mam doświadczenia w tych obszarach. Mam problem, w którym muszę przenieść obiekt, O, z różnych stanów do innych stanów (takich jak niedeterministyczne automaty skończone). Problem polega na tym, że Obiekt może znajdować się w różnych stanach w tym samym czasie, a interakcja czasami ma znaczenie. Na przykład powiedzmy, że istnieje 10 stanów, O może znajdować się w maksymalnie 3 z tych stanów w tym samym czasie. Jestem trochę zagubiony, jaki rodzaj projektu kodu powinienem użyć do modelowania tego. Dwie idee, o których myślę, to 1. Przekaż O od obsługi do obsługi i zarządzaj przejściami między stanami oraz przechowuj informacje w O, mówiące, w jakich stanach się znajdują, aby każdy stan mógł dowiedzieć się, co robić na podstawie w jakich innych stanach jest O. 2. Mieć większą Superklasę, która obsługuje stany O i obsługuje interakcje. Normalnie powiedziałbym 1. ale obsługa wszystkich interakcji między obsługą w każdym programie obsługi brzmi niechlujnie. Jaka byłaby lepsza opcja między tymi 2? A może jest inna preferowana metoda? ** Aktualizacja i wyjaśnienie ** Jako konkretny przykład. Obiekt może znajdować się w jednej z wielu fizycznych lokalizacji, ale może również znajdować się na jednym z kilku etapów przetwarzania (obiekt może poruszać się tam iz powrotem między lokalizacjami lub tam iz powrotem między etapami przetwarzania). Jako dodatkowa złożoność każda fizyczna lokalizacja może mieć podlokalizacje, ale myślę, że na razie mogę to zignorować. Więc jeśli jest jaśniej, można uznać, że są to dwa niezależne automaty, ale wybór krawędzi do przejścia do następnego stanu w każdym z automatów zależy od stanu obu automatów.


title: Czy mogę zminimalizować JavaScript, który wymaga informacji o prawach autorskich?

text: Myślę, że to właściwie pytanie prawne, ale dotyczy oprogramowania. Mam zamiar włączyć do projektu wtyczkę JS. Komentarze obejmują: > * Redystrybucja kodu źródłowego musi zawierać powyższą informację o prawach autorskich, > tę listę warunków i następujące wyłączenie odpowiedzialności. * Redystrybucje w > formie binarnej muszą zawierać powyższą informację o prawach autorskich, tę listę > warunków i następujące wyłączenie odpowiedzialności w dokumentacji i/lub innych materiałach > dostarczonych z dystrybucją. > 1. Czy używanie tego na mojej stronie jest „redystrybucją”? 2. Jeśli zminimalizuję to, aby zaoszczędzić przepustowość, zakładam, że usunie to wszystkie komentarze. **Jeśli odpowiedź na nr 1 brzmi „tak”, czy nie oznacza to, że prawnie nie wolno mi tego minimalizować?** (To by śmierdziło, ponieważ planowałem auto-minifikację całego JS w ramach procesu wdrażania. )


title: jak udowodnić matematycznie złożoność algorytmu

text: Znam podstawowe algorytmy i ich zawiłości. na przykład jeśli wyszukiwanie binarne ma złożoność O(log n), to jak matematycznie to udowodnić?


title: Który z tych 3 języków najłatwiej przekonwertować na Delphi?

text: Zamierzam zakupić kod źródłowy do mojego programu Delphi. Nie jest to zbyt duży algorytm, ale nie jest dostępny w Delphi i będę musiał go przetłumaczyć na Delphi. Jednak nie pracowałem w żadnym z języków, w których jest oferowany i nie wiem, który powinienem kupić. Chcę takiego, który najłatwiej i najdokładniej przełoży się na Delphi. Te trzy języki to: C++, Java i C#. Który najłatwiej byłoby przekonwertować?


title: Czy w dokumencie wymagań funkcjonalnych sekcja Założenia jest niebezpieczna?

text: Obecnie jestem recenzentem dokumentu Best Practices for Developers lub Business Analysts przy pisaniu dokumentu dotyczącego wymagań funkcjonalnych. Dokument ten niekoniecznie jest szablonem dokumentów wymagań funkcjonalnych, ale przewodnikiem po tym, jakie elementy są niezbędne, opcjonalne i niebezpieczne, aby uwzględnić dokument wymagań funkcjonalnych. Autor dokumentu stwierdza, że: > Dokumenty wymagań funkcjonalnych NIGDY nie powinny zawierać sekcji Założenia! > Nie zakładaj niczego na temat tego, co ludzie wiedzą o tej aplikacji lub jakichkolwiek > związanych z nią kwestii zewnętrznych. Nie jestem pewien, czy zgadzam się z tym odczuciem, ale też nie mam słów, by je obalić. W idealnym świecie analityk będzie miał czas, aby właściwie przeanalizować każdy wkład interesariuszy i każdy możliwy problem zewnętrzny, ale nieuchronnie ze względu na ograniczenia czasowe i inne kwestie należy przyjąć pewne założenia. Czy to zły pomysł, ponieważ leniwym intelektualnie zbyt łatwo jest deklarować założenia, a nie wymagania? Jeśli nie, to dlaczego uważasz, że założenia są dobrym pomysłem? **EDYTUJ:** Aby wyjaśnić, nie pytam o sekcję Założenia w dokumentacji technicznej, ale o sekcję Założenia w dokumencie wymagań napisanym przez nietechnicznego analityka biznesowego.


title: Jak mamy postępować z Klientami, których to nie obchodzi?

text: Mam klientów, którzy oczekują wszystkiego za bezcen. Chcą również, aby rzeczy zachowywały się w określony sposób lub wyglądały w określony sposób, ale wyjaśniając im, dlaczego nie jest dobrym pomysłem wdrażanie określonej funkcji i proponując sugestie, nie słuchają. Kiedy coś idzie nie tak, stają się nastrojowi i żądają zmiany/przekodowania całej funkcji zgodnie z ich upodobaniami, ale kiedy powiedziano im, że to dlatego, że tak tego chcieli, nie słuchają. Odkryłem, że po latach przebywania z takimi ludźmi ma to duży wpływ na sposób, w jaki radzę sobie z ludźmi, których nie mogę znieść, i poważnie wyczerpały mi się pomysły. Jak radzisz sobie z ludźmi, którzy nigdy nie słuchają, nigdy się nie uczą i chcą wszystkiego za darmo?


title: Jak przedstawić akcję Importuj plik na diagramie sekwencji?

text: Wszyscy mówią, że diagramy sekwencji są takie proste, ale po prostu nie mogę tego rozgryźć. Zasadniczo użytkownik klika przycisk „Importuj z folderu tymczasowego”, program otwiera okno z listą wypełnioną nazwami plików, użytkownik klika nazwę pliku, klika OK i dokument jest importowany. Znam kolejność działań, ale jak zobrazować m.in. wypełnianie listy lub wybieranie pozycji z listy? Zakładam więc, że obiekty wyglądałyby następująco: [USER] [ImportDialogWindow] [ListOfFiles:STRING] [?gdzie iść z wybranym plikiem]


title: Pakowanie plików PHP/Python w plikach .apk Androida?

text: Zajmuję się tworzeniem aplikacji na Androida przy użyciu HTML5. Chcę, aby działało całkowicie offline. Wiem, że można spakować pliki .html, .css i .js wewnątrz samego pliku .apk w „zasobach”, ale czy można również spakować pliki PHP lub Python w samym pliku .apk? Aby aplikacja nie wymagała połączenia z Internetem?


title: testowanie jednostkowe na ARM

text: Opracowujemy kod na poziomie aplikacji, który działa na procesorze ARM. BSP (kod niskiego poziomu) jest dostarczany przez firmę 3d, więc nasz kod znajduje się tuż nad tą warstwą abstrakcji (kod jest napisany w c++). Aby przeprowadzić testy jednostkowe, zakładam, że będziemy musieli wyśmiewać/odcinać bibliotekę BSP (zasadniczo abstrahując od HW), ale nie jestem pewien, czy jeśli napiszę/przeprowadzę test jednostkowy na moim komputerze, czy skompiluję to na przykład z GCC? Zwykle używamy kompilatora Realview do kompilowania naszego kodu dla ARM. Czy mogę założyć, że jeśli skompiluję i uruchomię kod za pomocą kompilatora x86, a testy jednostkowe przejdą, to przejdzie on również po skompilowaniu za pomocą kompilatora RealView? Nie jestem pewien, jak wielką różnicę robi kompilator i czy możesz ufać, że jeśli skompilowany kod x86 przejdzie testy jednostkowe, możesz być również pewien, że skompilowany kod Realview jest w porządku.


title: Dlaczego IDE HDL są tak nieprzyjazne dla użytkownika w porównaniu do IDE języka ogólnego przeznaczenia (takiego jak Java/C)?

text: Od jakiegoś czasu zajmuję się programowaniem i omówiłem wiele języków. I ten trend, który zauważyłem, polega na tym, że wszystkie języki HDL mają tak bolesne IDE! Ogólnie rzecz biorąc, każde środowisko programistyczne z pewnymi programami związanymi ze sprzętem ma bardzo kiepski interfejs użytkownika. Mówię o uVision, ModelSim, VHDL Simili, Xilinx itp. w porównaniu z Netbeans, Eclipse, Visual Studio itp. Dlaczego ludzie od sprzętu nienawidzą swoich programistów? UWAGA: Są wyjątki (LABView jest niesamowity!). Czy możesz pomyśleć o czymś więcej?


title: Dlaczego statyczna metoda główna w Javie i C#, a nie konstruktor?

text: Szukam ostatecznej odpowiedzi z pierwotnego lub wtórnego źródła, dlaczego (zwłaszcza) Java i C# zdecydowały się na statyczną metodę jako punkt wejścia, zamiast reprezentować instancję aplikacji przez instancję klasy `Application` (z punktem wejścia jest odpowiedni konstruktor). * * * ### Tło i szczegóły moich wcześniejszych badań O to pytano już wcześniej. Niestety, istniejące odpowiedzi tylko nasuwają pytanie. W szczególności nie satysfakcjonują mnie następujące odpowiedzi, ponieważ uważam je za niepoprawne: * _Byłaby niejednoznaczność, gdyby konstruktor był przeciążony._ – W rzeczywistości C# (podobnie jak C i C++) dopuszcza różne sygnatury dla `Main` więc istnieje ta sama potencjalna niejednoznaczność i należy się nią zająć. * Metoda _A`statyczna` oznacza, że żadne obiekty nie mogą być tworzone wcześniej, więc kolejność inicjalizacji jest jasna._ – To jest po prostu błędne, niektóre obiekty _są_ tworzone wcześniej (np. w konstruktorze statycznym). * _Więc mogą być wywoływane przez środowisko wykonawcze bez konieczności tworzenia instancji obiektu nadrzędnego._ – To w ogóle nie jest odpowiedź. Tylko dla dalszego uzasadnienia, dlaczego uważam, że jest to ważne i interesujące pytanie: * Wiele frameworków _do_ używa klas do reprezentowania aplikacji i konstruktorów jako punktów wejścia. Na przykład framework aplikacji VB.NET używa dedykowanego głównego okna dialogowego (i jego konstruktora) jako punktu wejścia1. * Ani Java, ani C# technicznie _nie potrzebują_ metody głównej. Cóż, C# potrzebuje go do kompilacji, ale Java nawet nie. I w żadnym wypadku nie jest potrzebny do egzekucji. Więc nie wydaje się to być ograniczeniem technicznym. I, jak wspomniałem w pierwszym akapicie, dla zwykłej konwencji wydaje się to dziwnie niepasujące do ogólnej zasady projektowania Javy i C#. Żeby było jasne, nie ma żadnej konkretnej _wady_ w posiadaniu statycznej metody `main`, jest ona po prostu wyraźnie _dziwna_ , co sprawiło, że zacząłem się zastanawiać, czy jest za tym jakieś techniczne uzasadnienie. Interesuje mnie ostateczna odpowiedź z pierwotnego lub wtórnego źródła, a nie tylko spekulacje. * * * 1 Chociaż istnieje wywołanie zwrotne (`Startup`), które może to przechwycić.


title: Dobre technologie do tworzenia modułowego komponentu serwera w .net?

text: Używam WPF, Prism i Unity do opracowania interfejsu użytkownika dla aplikacji .net. Interfejs użytkownika będzie działał z komputera PC, ale muszę również opracować oddzielny złożony komponent serwera, który będzie dostarczał usługi komponentowi PC za pośrednictwem WCF. Prism i Unity okazały się bardzo przydatne w tworzeniu aplikacji modułowej, przynajmniej jeśli chodzi o interfejs użytkownika. Chciałbym również, aby komponent serwerowy był modułowy, ale nie mogę nigdzie znaleźć odpowiednich technik, wzorców i technologii. Rozważałem: * Unity lub jeden z innych kontenerów DI * Wybrane części Prism, takie jak moduły i zdarzenia Czy są one odpowiednie do opracowania modułowego komponentu serwera? A może są to tylko technologie interfejsu użytkownika i czy powinienem patrzeć na coś zupełnie innego?


title: Czy ewidencjonujesz foldery bin lub debug (i biblioteki dll) w swoim TFS?

text: Szybkie pytanie o TFS - Czy wpisujecie foldery bin/debug do TFS? (jeśli tak, to dlaczego?) Skoro zawartość tych folderów jest generowana dynamicznie, czy lepiej je pominąć, aby programista nie napotkał problemów tylko do odczytu?


title: Kiedy 'kod optymalizacji' == 'strukturyzacja danych'?

text: Niedawny artykuł ycombinator zawiera komentarz z zasadami świetnego programisty. > `#`7\. Dobry programista: optymalizuję kod. Lepszy programista: ja struktury > dane. Najlepszy programista: Jaka jest różnica? Uznanie subiektywnych i kontrowersyjnych pojęć – czy ktoś ma pogląd na to, co to oznacza? Tak, ale chciałbym później zredagować to pytanie swoimi przemyśleniami, aby nie predysponować odpowiedzi.


title: Jak są stosowane licencje na oprogramowanie?

text: Stworzyłem mały i pomocny projekt, który chciałbym załadować do publicznego repozytorium i udostępnić na licencji FreeBSD. Jakie są typowe kroki, które należy wykonać, aby zastosować licencję do mojego kodu? Chodzi mi o to, jakie czynności techniczne należy wykonać, aby zastosować wybraną licencję. Dokładniej: 1. Czy informacje o licencji należy umieszczać w nagłówku każdego pliku? 2. Jeśli tak, czy powinienem umieścić cały tekst licencji, czy istnieje akceptowalna krótka wersja? 3. Czy powinienem mieć konkretny plik (np. w katalogu głównym), który zajmuje się licencjonowaniem? Czy wystarczy umieścić w nim tekst licencji? 4. Jeśli projekt jest wspólnym wysiłkiem różnych osób on-line, które nie są częścią żadnej organizacji, co należy napisać w klauzuli o prawach autorskich? Czy są jakieś inne problemy techniczne, o których powinienem wiedzieć?


title: Czy starając się o pracę powinienem pracować za darmo?

text: Pracodawca zazwyczaj prosi kandydata o wykonanie małego projektu w domu („praca domowa”) w ramach ubiegania się o pracę. Kiedy ostatnio aplikowałem o pracę (jako web developer), było około 10 kandydatów, którym przydzielono różne zadania. Pomimo tego, że wakat był tylko jeden, firma wykorzystała pracę wszystkich kandydatów w jednym ze swoich projektów. Właściwie jest całkiem prawdopodobne, że firma tworzy te „wolne stanowiska” tylko po to, by ludzie pracowali za darmo – szacuję, że około 2 tygodnie pracy programisty zostało zaoszczędzone przy wszystkich podaniach o pracę, które firma miała na jednym wakcie. Czy to powszechna praktyka i jak możesz uchronić się przed pracą za darmo w przyszłości? Widziałeś to w swojej karierze?


title: Jak stworzyć wyróżniający się zestaw spośród innych zestawów?

text: Podczas rozwiązywania problemów na Techgig.com uderzył mnie jeden z problemów. Problem jest taki: > Firma organizuje dwa wyjazdy dla swoich pracowników w ciągu roku. Chcą > wiedzieć, czy wszyscy pracownicy mogą zostać wysłani w podróż, czy nie. Warunkiem > jest to, aby żaden pracownik nie mógł jechać na obie wycieczki. Aby określić, którzy pracownicy mogą pracować razem, ograniczeniem jest to, że pracownicy, którzy pracowali razem w przeszłości, nie będą należeć do tej samej grupy. Przykłady problemu: > > 1. Załóżmy, że historia pracy jest podana w następujący sposób: {(1,2),(2,3),(3,4)}; wtedy > możliwe jest zakwaterowanie wszystkich czterech pracowników w dwóch podróżach (jedna podróż > składa się z pracowników 1 i 3, a druga z pracownikami 2 i 4). Żaden > z dwóch pracowników podczas tej samej podróży nie pracował razem w przeszłości. > 2. Załóżmy, że historia pracy jest podana jako {(1,2),(1,3),(2,3)} to > nie ma możliwości, aby dwa wyjazdy spełniały regułę firmy i > obejmowały wszystkich pracowników . > Czy ktoś może mi powiedzieć, jak postępować z tym problemem?


title: W którym momencie dobrze jest spróbować na nowo wymyślić standard?

text: Spójrz na to zdjęcie z XKCD.com ![Hej, trochę tekstu po najechaniu myszą. Ciekawe, czy mówi coś o urządzeniach USB?](http://imgs.xkcd.com/comics/standards.png) Dobrym tego przykładem są przeglądarki. Tworząc dla nich strony internetowe, muszę przeszukiwać unikalne „standardy” dla każdego z nich, aby upewnić się, że moje strony są w pełni kompatybilne. Opracowując nowy program (aby konkurować z istniejącymi produktami) widzę, że ludzie myślą, że ich pomysł warto umieścić w produkcie końcowym, aby inne produkty również dostrzegły zalety i uwzględniły go. Oczywiście nie zawsze tak jest (po raz kolejny dobrym przykładem są przeglądarki). Niektóre funkcje są ignorowane przez przeglądarki Webkit, a niektóre przez przeglądarki Gecko, a mimo to IE po prostu ignoruje wszystko całkiem szczerze. W rzeczywistości te nowe „pomysły” lub implantacja zwykle powodują problemy dla użytkownika końcowego. Czasami te pomysły są ważne, aby je uwzględnić. Bez pomysłów nie byłoby zmian, a bez zmian nie byłoby postępu ani pozytywnych ulepszeń. W którym momencie pomysł/funkcja warto wdrożyć. Co decyduje o tym, czy dana funkcja jest warta stania się „standardową”?


title: Współczesne języki i JVM

text: Wiele nowoczesnych języków programowania (Scala, Erlang, Clojure itp.) jest ukierunkowanych na JVM. Jakie są główne powody tej decyzji? * Dojrzałość JVM? * Przenośność? * Ponieważ JVM po prostu istnieje, a projektanci języka nie chcieli napisać nowej maszyny wirtualnej/interpretera?


title: Jak uzyskać krótkoterminową pracę programisty lub staż za granicą?

text: Planuję wyjechać do Wielkiej Brytanii lub Irlandii (ale ogólnie rzecz biorąc, może to być dowolna lokalizacja) na 3-6 miesięcy za około rok i chciałbym być tam częścią zespołu programistycznego. Niekoniecznie szukam pracy na pełen etat, ale biorąc pod uwagę, że kilka obszarów wokół jest znanych jako „raje programistów”, wolałbym z niej skorzystać, aby poszerzyć swoje horyzonty i podzielić się wiedzą, którą posiadam. Chciałbym: * przyglądać się i brać udział w wymianie wiedzy i strategiach podejmowania decyzji. Aby zobaczyć, jak ludzie myślą o różnych problemach, jak sobie z nimi radzić, jak dzielą i dystrybuują pracę itp. * Aby poznać najlepsze praktyki w działaniu, zamiast próbować zmusić ich do pracy dla mnie jako samotnego programisty lub pracy dla jeszcze innej firmy , który chce, żebym po prostu to zrobił. * nawiązać kontakt z nowymi dla mnie technologiami i językami, chociaż jest to naprawdę opcjonalne, bo to coś, co mogę zrobić sam (chociaż rzadko znajduję na to czas). Lubię myśleć, że mam wiele rzeczy do wniesienia do stołu, ale chciałbym też dużo się nauczyć, a jeszcze lepiej przeżyć. Więc czego szukam na staż dla programisty z doświadczeniem zawodowym. W zasadzie coś w rodzaju pobytu czeladnika: pracować z kimś, do kogo mogę się zwrócić, gdy ewidentnie potrzebuję mądrości. Jak mogę to zrobić?


title: Poziom zaangażowania w projekt?

text: Podałeś swój czas, że stworzenie oprogramowania zajmie trochę czasu. Kiedy zaczynasz projekt, czy lepiej na początku popracować nad sobą, a później popłynąć? czy starać się utrzymać spójny wysiłek przez cały czas trwania projektu?


title: Kopie zapasowe Git i projektów

text: Używam SVN od jakiegoś czasu i robię niezręczne, ale wkrótce będzie satysfakcjonujące przejście na git. Pracuję nad kilkoma pobocznymi / małymi projektami, nad którymi 90% nigdy nie ujrzy światła dziennego. Poza tym - mam też cotygodniowe zadania/projekty szkolne, a na koniec projekty klientów, które mam w podróży. Odwoływałem się do pomysłu lub pytania, jak lub jaki byłby najlepszy sposób na tworzenie kopii zapasowych moich projektów. Rozwiązania, których szukałem do tej pory: **github**, który oferuje znakomitą usługę - nie mam nic przeciwko temu, że moja praca jest open source, jednak to praca szkolna i praca z klientami, na które mogę nie chcieć, aby publiczność była otwarta . github ma oczywiście plan płatności - ale spójrzmy prawdzie w oczy, jestem biednym studentem robiącym co w mojej mocy, aby przynajmniej umieścić KD na stole! Jest **pamięć USB**, którą mogę zabrać ze sobą, pracować lub tworzyć kopie zapasowe, ale wymaga to ciągłego korzystania z niej. Jest **Dropbox** , ale to trochę przesada, ponieważ jest to również forma systemu kontroli wersji - mam sporo rzeczy w ruchu - umieszczenie wszystkiego w dropboxie zajęłoby dużo miejsca W końcu jest **serwer prywatny**. Mam komputer Mac mini jako serwer multimediów i myślałem, że mogę na nim wykonać kopię zapasową. W każdym razie - co myślą twoi faceci, jak radzisz sobie z tworzeniem kopii zapasowych projektów, nie tylko do kontroli wersji, ale do codziennych kopii zapasowych.


title: Próbowałeś uczyć się programować przed studiami, przypadkowo przytłoczyłem się, napiwkami?

text: Mam szesnaście lat, nadmiernie interesuję się programowaniem, a obecnie chodzę na zajęcia z informatyki podczas moich poranków w liceum. W zeszłym roku próbowałem nauczyć się kodować. To było całkiem ekscytujące, ale wszystko, co zrobiłem, to oglądanie filmów TheNewBoston na YouTube dla Pythona. Po jego tutorialach po prostu zrobiłem badania, stworzyłem kilka programów CMD i to wszystko. Po tym stałem się zarozumiały i zmoczyłem stopy w wielu innych językach. Java, C++, C#, Perl, Ruby... i to mnie przytłoczyło. Co sprawiło, że kodowanie było mniej zabawne. Chcę iść do college'u na 2-letni kurs programowania. I chcę, aby pisanie kodu stało się moim zawodem. Ale jak radzisz, żebym ponownie zaatakował, żebym się tego wszystkiego nauczył od nowa? Zacznij od Pythona? Nawet nie próbuj? Poza tym nie jestem w 100% w matematyce, ale przyjaźnię się z wieloma programistami, którzy mówią, że są do bani z matematyki, ale radzą sobie z kodowaniem całkiem dobrze. Nie szukam negatywnej opinii. Po prostu chcę mieć dobry start w sprawach przed college'em.


title: Dlaczego używamy do mówienia o adresach i pamięci zmiennej w C?

text: Dlaczego używamy do mówienia o adresach i pamięci zmiennej w C, gdzie w innych językach (jak w Javie, .Net itp.) nie mówimy o adresie i pamięci zmiennej w programie, będziemy bezpośrednio używać zmiennych. Ale w języku C słuchamy słowa adres i pamięć. Jak to wyjaśnić? Mam nadzieję, że C jest językiem wysokiego poziomu zaprojektowanym na asemblerze. Więc C jest cienką warstwą nad językiem asemblerowym (w języku asemblerowym będziemy używać lokalizacji w pamięci do przechowywania zmiennej i śledzenia zmiennej). Ale w innych językach te adresy i rzeczy związane z pamięcią są opakowane w ten specyficzny język, abyśmy nie słuchali tych słów.


title: Czy adaptery lub owijki powinny być testowane jednostkowo?

text: Załóżmy, że mam klasę, która implementuje pewną logikę: public MyLogicImpl implementuje MyLogic { public void myLogicMethod() { //moja logika tutaj } } i gdzieś indziej klasę testową: public MyLogicImplTest { @Test public void testMyLogicMethod() { /test my logika } } Mam też: @WebService public MyWebServices class { @Inject private MyLogic myLogic; @WebMethod public void myLogicWebMethod() { myLogic.myLogicMethod(); } } Czy powinna istnieć jednostka testowa dla `myLogicWebMethod`, czy też jej testowanie powinno być obsługiwane w testach integracyjnych.


title: Jak radzić sobie z transakcjami podczas tworzenia połączenia z bazą danych dla każdego zapytania

text: Zgodnie z tym postem zamierzam zmienić moją witrynę internetową, aby utworzyć połączenie na zapytanie, aby skorzystać z puli połączeń .NET. Mając to na uwadze, nie wiem, jak mam postępować z transakcjami. W tej chwili robię coś takiego (psuedo kod): GlobalTransaction = GlobalDBConnection.BeginTransaction(); try { ExecSQL("insert into table ..") ExecSQL("update some_table ..") .... GlobalTransaction.Commit(); }catch{ GlobalTransaction.Rollback(); rzucić; } ExecSQL wygląda tak: using (SqlCommand Command = GlobalDBConnection.CreateCommand()) { Command.Connection = GlobalDBConnection; Command.Transaction = GlobalTransaction; Command.CommandText = SQLStr; Command.ExecuteNonQuery(); } Nie jestem do końca pewien, jak zmienić tę koncepcję, aby radzić sobie z transakcjami, jeśli połączenie jest tworzone w ramach `ExecSQL`, ponieważ chciałbym, aby transakcja była współdzielona przez procedury wstawiania i aktualizowania.


title: Jaki jest techniczny powód, dla którego tak wiele serwisów społecznościowych nie pozwala na edycję tekstu?

text: Częstym zarzutem, jaki słyszę na temat Facebooka, Twittera, Ninga i innych serwisów społecznościowych, jest to, że po dodaniu komentarza lub posta nie można go edytować. Myślę, że jest to sprzeczne z jednym z kluczowych celów związanych z doświadczeniem użytkownika: zapewnieniem użytkownikowi **agencji** lub możliwości kontrolowania tego, co robi w oprogramowaniu. Nawet w witrynach Stackexchange możesz edytować komentarze tylko przez określony czas. **Czy brak możliwości w tak wielu aplikacjach internetowych, aby nie pozwalać użytkownikom na edytowanie ich tekstu, jest technicznym niedociągnięciem lub „funkcją z założenia”?**


title: Aplikacja w sklepie Mac App Store za darmo dla tych, którzy już pobrali wersję na iPhone'a?

text: Chcę, aby osoby korzystające z mojej aplikacji na iPhone'a mogły bezpłatnie pobrać wersję na komputery Mac (ze sklepu z aplikacjami na komputery Mac)? a inni za to płacą! możliwy? jakieś pomysły jak to zrealizować?


title: Testowanie w kodzie programowania proceduralnego

text: Zaprojektowałem i wdrożyłem, na ostatni rok studiów, autonomicznego robota z mikrokontrolerem płytki Arduino. Robot krąży po terenie, omija przeszkody i próbuje wykryć intruzów. Muszę zrobić kilka testów dla tego projektu. Czy ktoś mógłby mi pomóc, mówiąc, jakie procedury testowe mogę wykonać w kodzie proceduralnym? Jednym z nich może być obserwacja zachowania robota? Serwo serwoLeft; // Zdefiniuj lewe serwo Servo servoRight; // Zdefiniuj prawy const serwa int trigPin = 5; const int echoPin = 2; wewn brzęczykPin = 6; //wybierz pin dla diody //buzzer int inputPin = 9; // wybierz pin wejściowy (dla czujnika PIR) int val = 0; Zegar t; wartość logiczna pirSense = fałsz; długie xrony=0; void setup() { Serial.begin(9600); servoLeft.attach(4); // Ustaw lewe serwo na pin cyfrowy 10 servoRight.attach(3); // Ustaw prawe serwo na pin cyfrowy 9 pinMode(buzzerPin, OUTPUT); // zadeklaruj LED jako wyjście pinMode(inputPin, INPUT); // zadeklaruj czujnik jako wejście pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); t.co (30000,monitorowanie); } void loop() { długi czas trwania, odległość; digitalWrite(trigPin, LOW); opóźnienieMikrosekund(2); digitalWrite(TrigPin, HIGH); opóźnienieMikrosekund(10); digitalWrite(trigPin, LOW); pinMode(echoPin, INPUT); czas trwania = pulseIn(echoPin, HIGH); odległość = mikrosekundyDoCentymetrów(czas trwania); opóźnienie (100); Serial.println(odległość); if (odległość >= 40){ moveForward(); } inny { stopMove(); int x = losowo (0,2); if(x == 0 ){ skręć w prawo(); opóźnienie (500); } else{ skręć w lewo(); opóźnienie (500); } } t.update(); } void monitoring(){ xronos = now(); while( xronos+5 >teraz() ){ stopMove(); opóźnienie (1000); pirSensor(); } } // Procedury ruchu do przodu, do tyłu, obracania i zatrzymania void reverse() { servoLeft.write(0); servoPrawo.write(180); } void moveForward() { servoLeft.write(180); servoRight.write(0); } void turnRight() { servoLeft.write(180); servoPrawo.write(180); } void turnLeft() { servoLeft.write(0); servoRight.write(0); } void stopMove() { servoLeft.write(90); servoRight.write(90); } long microsecondsToCentimeters(long microseconds) { // Prędkość dźwięku wynosi 340 m/s lub 29 mikrosekund na centymetr. // Ping przemieszcza się iz powrotem, więc aby znaleźć odległość obiektu, // bierzemy połowę przebytej odległości. powrót mikrosekundy / 29 / 2; }


title: Dlaczego musimy pisać plik nagłówkowy?

text: Wiem, że zanim zaczniesz rzucać złośliwe komentarze, to jest głupawe pytanie. Po raz pierwszy używam języka opartego na C. Jestem studentem pierwszego stopnia, który uczy się Celu C na kursie informatyki na temat rozwoju mobilnego. Wiem, że w środowisku akademickim wiele rzeczywistych rozważań nie jest koniecznych, ponieważ budujesz mniejsze projekty, pracujesz w mniejszych zespołach itp. Ale nasz profesor wymaga — a XCode obsługuje — pliki nagłówkowe .h dla każdego pliku implementacyjnego .m. Wydaje mi się, że to ciężka praca. Muszę się upewnić, że kopiuję każdą sygnaturę metody i zmienną instancji do innego pliku. Jeśli zmienię jeden plik, muszę upewnić się, że jest zgodny z innym plikiem. Wygląda na to, że to tylko kilka małych przykrości. Ale wiem, że pliki nagłówkowe muszą być _jakoś_ używane w świecie rzeczywistym. Wspaniała odpowiedź dotyczyłaby obu: 1. Do czego przydatny jest plik nagłówkowy, do którego plik implementacji nie jest odpowiedni? Jaki jest jego cel? 2. Dlaczego jako programiści musimy ręcznie pisać nasze pliki nagłówkowe? Wygląda na to, że można je łatwo wygenerować automatycznie. Z góry dziękuję!


title: Jak przetestować zlokalizowaną aplikację WPF w Visual Studio 2012

text: Próbuję stworzyć zlokalizowaną aplikację w C#/WPF w Visual Studio 2012. W tym celu utworzyłem dwa pliki zasobów i zmieniłem jeden ciąg w oknie (XAML), aby korzystać z plików zasobów (zamiast zakodowanego na sztywno ciągu). Widzę tekst w języku angielskim z pliku zasobów, który jest poprawny. Jednak chcę sprawdzić, czy inny plik zasobów (fr-FR) również działa, ale nie mogę znaleźć ustawienia ani procedury, jak zmienić mój „projekt”, aby działał w języku francuskim. Z góry dziękuję.


title: Narzędzie wiersza poleceń do generowania raportu użycia metody

text: Czy istnieje narzędzie wiersza poleceń (preferowane), które wygeneruje raport metod Java w ramach klasy i gdzie są one używane w kilku folderach projektu. Rodzaj sposobu, w jaki Netbeans wykonuje „Znajdź użycie” w otwartych projektach, ale jako podejście zautomatyzowane. Mam klasę narzędziową, która zawiera wiele metod statycznych, ale nie mam pojęcia, które z nich są martwym kodem [ignorowanie użycia przypadków testowych]


title: Integracja tras, które nie są zasobami w aplikacji w stylu MVC REST

text: Chciałbym, aby moja aplikacja była względnie czysta pod kątem REST ze względu na spójność, ale zmagam się filozoficznie ze stosunkowo niewielką liczbą widoków (może tylko jednym), które będę musiał zbudować, a które nie odnoszą się bezpośrednio do zasobów, i dlatego nie pasują do stylu REST. Jako przykład weź stronę główną. Ruby on rails wydaje się opierać na swoim podejściu RESTful do tej bardzo podstawowej potrzeby wszystkich stron internetowych. Strona główna wygląda wyjątkowo: * Możesz ją zdobyć, ale zdobycie na poziomie zasobów ma dać ci kolekcję elementów. Mogę sobie wyobrazić, że jest to może lista tras, ale wydaje się, że jest to odcinek i nie odnosi się do niczego innego. * Uzyskiwanie strony głównej przez id nie ma większego sensu - co to jest element domowej kolekcji? Znowu może trasy, ale dostanie się na trasę, co zrobi? Przeadresować? To dziwne uczucie. * Nie możesz go usunąć (prawdopodobnie możesz zezwolić na to administratorom) * Dodanie drugiego nie ma sensu, chyba że elementy byłyby trasami * Aktualizacja może mieć sens dla administratorów, ale AFAIK REST nie opisuje aktualizacji bezpośrednio na zasobie, tylko elementy zasobu (ten artykuł wyraźnie mówi "NIEUŻYWANE" dla PUTS na zasobie) Czy "właściwą" rzeczą jest zrobienie tylko w szczególnym przypadku tego typu rzeczy? Pod koniec dnia mogę ogarnąć głowę większością aplikacji gromadzonych wokół zasobów… Nie mogę wymyślić innego dobrego przykładu niż strona główna, ale ponieważ jest to początek aplikacji, myślę, że to wymaga przemyślenia.


Jakimi zasadami kieruje się Twoja organizacja zajmująca się inżynierią oprogramowania lub rozwojem? Jestem bardzo zainteresowany listą zasad od kogoś, kto pracuje w firmie, w której zasady te są omawiane, publikowane, przestrzegane itp. Najbardziej zbliżone do organizacji inżynierskiej opartej na zasadach są firmy, które są zwinne i stosują się do metodyki agile. zasady. Oto lista wartości/wyzwań Maricka: http://www.agilejourneyman.com/2010/02/4-challenges-and-5-guiding-values-of.html Szukam wskazówek na więcej takich rzeczy. W idealnym przypadku chciałbym usłyszeć od ludzi, którzy faktycznie wdrożyli w swojej organizacji podejście oparte na zasadach.