title: Ile czasu należy poświęcić na błędy w porównaniu z oryginalnym rozwojem?

text: To pytanie jest trochę abstrakcyjne, ale mam nadzieję, że ktoś wskaże mi właściwy kierunek. Moje pytanie brzmi, ile czasu można się spodziewać poświęcić na błędy projektu oprogramowania w stosunku do pierwotnego czasu rozwoju. Zdaję sobie sprawę, że istnieje ogromna liczba decydujących czynników, ale miałem nadzieję na typowy lub przeciętny podział. Na przykład, jeśli ukończenie projektu A zajmie 40 godzin i dodatkowe 10 błędów, to ten projekt będzie miał stosunek 4:1. Jeśli ukończenie innego projektu (B) zajmie 10 godzin, ale kolejne 8 na błędy, to będzie miał stosunek 5:4. Czy jest to udokumentowana/zbadana koncepcja? ### AKTUALIZACJA Dziękujemy za wszystkie pouczające odpowiedzi. Rozumiem, że nie można postawić standardu tego rodzaju metryki ze względu na wszystkie związane z tym zmienne i czynniki środowiskowe. Zanim przydzielę odpowiedź, chciałbym się dowiedzieć, czy ta metryka ma ustaloną nazwę, abym mógł przeprowadzić dalsze badania. Chciałbym dojść do punktu, w którym mogę zrozumieć pomiary niezbędne do samodzielnego wygenerowania metryk i ostatecznie wypracować podstawowy standard dla mojego projektu.


title: umowy programistyczne i prawa autorskie

text: Szybkie pytanie chłopaki. Może zależeć od kraju, więc to pytanie jest bardziej skierowane do obywateli UE. Jeśli wykonałem pracę programistyczną, wystawiłem fakturę, ale nigdy nie otrzymałem zapłaty, czy nadal posiadam prawa autorskie i mogę zabronić korzystania z oprogramowania? Z góry nie podpisano żadnej konkretnej umowy dotyczącej praw autorskich. Nie wiem, czy możesz pomóc, ale chociaż prośba może być warta strzału


title: Ponowne wykorzystanie treści innej firmy dla tego samego klienta

text: Oto scenariusz: mój klient (nazwijmy go Firmą A) miał stronę internetową zbudowaną przez kogoś innego (nazwijmy go Firmą B). Następnie poprosili mnie (firmę C) o skonfigurowanie struktury innej firmy, aby wyglądała i działała dokładnie tak samo, jak ta, którą zbudowała dla nich firma B. Czy używanie przeze mnie treści (w tym obrazów, CSS, a nawet HTML) z witryny firmy B utworzonej dla firmy A byłoby zgodne z prawem? Warto wspomnieć, że nazwa firmy A znajduje się w informacji o prawach autorskich w stopce witryny utworzonej przez firmę B dla firmy A.


title: Zrozumienie "programowania do interfejsu"

text: Często spotykam się z terminem „programowanie do interfejsu zamiast implementacji” i wydaje mi się, że rozumiem, co to znaczy. Ale chcę się upewnić, że rozumiem korzyści i możliwe implementacje. „Programowanie do interfejsu” oznacza, że w miarę możliwości należy odwoływać się do bardziej abstrakcyjnego poziomu klasy (interfejsu, klasy abstrakcyjnej, a czasem jakiejś superklasy), zamiast odwoływać się do konkretnej implementacji. Typowym przykładem w Javie jest użycie: `List myList = new ArrayList();` zamiast `ArrayList myList = new ArrayList();` . Mam dwa pytania na ten temat: 1. Chcę się upewnić, że rozumiem główne korzyści płynące z tego podejścia. Myślę, że korzyści to przede wszystkim elastyczność. Deklarowanie obiektu jako bardziej wysokiego poziomu odniesienia, a nie konkretnej implementacji, pozwala na większą elastyczność i łatwość konserwacji w całym cyklu rozwoju i w całym kodzie. **Czy to jest poprawne? Czy elastyczność jest główną korzyścią?** 2. Czy jest więcej sposobów „programowania do interfejsu”? Czy też „deklarowanie zmiennej jako interfejsu, a nie konkretnej implementacji” jest jedyną implementacją tego pojęcia? **EDYCJA: Wyjaśnienie** \- Nie mówię o interfejsie konstrukcji Java**. Mówię o zasadzie OO "programowanie do interfejsu, a nie implementacja". Zgodnie z tą zasadą, **światowy „interfejs” odnosi się do dowolnego „nadtypu” klasy** \- interfejsu, klasy abstrakcyjnej lub prostej nadklasy, która jest bardziej abstrakcyjna i mniej konkretna niż jej bardziej konkretne podklasy.


title: Czy powinienem przejść kurs certyfikacyjny C#, aby nauczyć się C#?

text: Chcę nauczyć się C# głównie po to, aby dostać się do XNA. Znam podstawy programowania i korzystałem z GameMakera, który ma własny język skryptowy. Tak naprawdę nie zamierzam wskoczyć do branży i szczerze mówiąc, nie jestem pewien, czy kiedykolwiek chciałbym programować, aby żyć. Jednak trudno mi uczyć się za pomocą samouczków i pomyślałem, że warto wziąć udział w zajęciach. Szkoła, do której chcę uczęszczać, to Community College, która oferuje kurs certyfikacyjny w języku C# i mogę go wziąć, jeśli uznam, że jest wart swojej ceny. Moje pytanie brzmi: **czy będzie warto**? Wiem, że zależy to w dużej mierze od szkoły i instruktorów, ale czy biorąc udział w kursie certyfikacyjnym, nauczę się czegoś więcej, niż gdybym wyłożył tę samą sumę pieniędzy na przyzwoite książki?


title: Poproszony o wprowadzenie dodatkowych godzin

text: Pracuję nad tym, jakie jest najlepsze podejście do tego, by pracodawca poprosił zespół o nadgodziny zarówno w dni powszednie, jak i dodatkowy dzień w weekendy (6-8 godzin). Brak dodatkowej rekompensaty (nadgodziny, dodatkowy czas wolny itp.) jest częścią umowy; Myślę, że z ich perspektywy chodzi o utrzymanie pracy. Pracujemy w cyklach 6 tygodniowych, więc czas trwania tego „czasu chrupania” jest długością cyklu. Cały zespół projektowy otrzymuje wynagrodzenie (zwolnione), a nie godzinowe. Po zakończeniu cyklu, jeśli uznamy, że projekt jest w „lepszym stanie”, wrócimy do normalnych oczekiwanych godzin typowego 40-godzinnego tygodnia pracy. Jakieś przemyślenia, rady lub wcześniejsze okoliczności, takie jak ta, z których mogłeś wyłonić się lepiej?


title: Czy powinienem zacząć programować w Pythonie 3?

text: > **Possible Duplicate:** > Czy powinniśmy używać Pythona 2.6 czy 2.7 czy 3.x? Teraz, gdy Django działa na Pythonie 3, myślę, że nadszedł czas, aby zadać to najważniejsze pytanie: Czy powinienem zacząć używać Pythona 3 zamiast Pythona 2? Wygląda na to, że chociaż 3 ma wiele wspaniałych nowych pomocnych funkcji, wszyscy trzymają się 2. Czy biblioteki Pythona 2 są kompatybilne w przód z Pythonem 3? Na przykład, czy stracę wszystkie moje aplikacje Django, które zostały opracowane dla Pythona 2?


title: Czy projektowanie metody zmieniającej argument (jeśli był obiektem) jest dobrą praktyką?

text: Założeniem jest użycie języka (np. C#, javascript), który przekazuje obiekt przez odwołanie do metody. Załóżmy, że istnieje obiekt „Player”, który ma właściwość „Level” i istnieje metoda, która przyjmuje jako parametr Player, a jej funkcją jest zwiększenie poziomu odtwarzacza o 1. Metodę można zaprojektować w następujący sposób (składnia c#): void AddLevelBy1 (Gracz gracza) { gracz.Poziom +=1; } Obawiam się, że ta metoda zmieniła wartość argumentu i nie mogłem znaleźć ogólnego sposobu, aby to wskazać (lub może zapobiec?). Kilka wskazówek można uzyskać od nazwy metody „AddLevelBy1”. Ale taki sposób nie jest niezawodny i jeśli metoda nosiła nazwę "foo", to staje się jeszcze bardziej niejednoznaczna. Czy istnieje rozwiązanie / konwencja dla tego przypadku (wskaż, czy argumenty zostaną zmienione)? A może taki projekt metody uznano za złą praktykę? **Dodano:** Postaraj się dokładniej opisać mój przypadek: 1. Mam obiekt "Gracz", który nie został przeze mnie zdefiniowany (nie można go zmienić). 2. Napisałem metodę (w tym przykładzie AddLevelBy1()), która przyjmuje jako parametr "Player" (wiem, co się stało). 3. Przekazuję też tego "Gracza" do innych metod (np. foo()), które nie zostały przeze mnie napisane (więc nie jest to sposób na sprawdzenie, czy "Gracz" się zmienił). Dzięki za kilka odpowiedzi poniżej, ale co, jeśli kody zostały zaprojektowane w sposób, który opisałem powyżej. Dodałem demo opisywanego przeze mnie przypadku: http://jsfiddle.net/54sun/srhHt/9/


title: czy oprogramowanie może być jednocześnie systemem ERP i CMS?

text: Czytałem o CMS i ERP. I w tym momencie pomyliłeś się, czy system może być zarówno ERP, jak i CMS? Czy to możliwe?


title: Jak programiści radzą sobie z tworzeniem oprogramowania niskopoziomowego w językach wysokiego poziomu?

text: Jestem trochę nowy w programowaniu i najlepszym sposobem, w jaki mogę zadać to pytanie, jest podanie przykładu. Wiem, jak robić podstawowe rzeczy w Javie i C#. Rzeczy takie jak małe okna tworzą aplikację lub tworzą klasę generyczną. Zasadniczo się uczyłem i jeszcze nie próbowałem robić nic wielkiego. W każdym razie zawsze byłem ciekaw, jak to się robi „pod maską”, myślę, że można tak powiedzieć. Wiem, że to wszystko sprowadza się do jedynek i zer i że języki asemblerowe w zasadzie dają polecenia do wzorców z jedynkami i zerami, ale wygląda na to, że jest to przeskok z tego miejsca do: użyj biblioteki do tego, a do tego biblioteki. Wydaje mi się, że wszystko, co C# może zrobić bez biblioteki, to arytmetyka i logika binarna. Aby uzyskać dane wejściowe lub wyjściowe, używasz bibliotek itp. Wiem, że to pytanie prawdopodobnie wydaje się niektórym oczywiste i wiem, że muszę się wiele nauczyć, ale nawet nie wiem, od czego zacząć z takim pytaniem. Dziękuję Ci. Więc moje pytanie brzmi: > Jeśli ktoś miałby stworzyć maszynę wirtualną lub emulator Playstation, > system operacyjny, lub sterownik, lub dodać obsługę mp3 do odtwarzacza multimedialnego, > lub stworzyć własny typ pliku, itp. .. Jak? Nie widzę sposobu, w jaki byłoby > zrobione z C# lub Java. Innymi słowy, gdybym przeczytał książkę taką jak Professional C# autorstwa WROX lub Programming C# autorstwa OReilly, czy wiedziałbym, jak to zrobić? A może musisz nauczyć się języka asemblera lub czegoś niższego, takiego jak C++?


title: Czy istnieje jakiś specyficzny dla sieci powód wyboru projektu stojącego za językiem JavaScript?

text: Wraz z nadejściem „sieci jest platformą”, JavaScript szybko staje się najczęściej używanym językiem programowania na świecie. Jednak wiele zadań, które są łatwe do wykonania w innych nowoczesnych językach, jest trudnych lub zagadkowych w JavaScript, ponieważ projekt języka jest tak „unikalny”: * JavaScript ma **system OOP oparty na prototypach** ; większość innych współczesnych języków ma język oparty na dziedziczeniu * JavaScript ma tak **dziwny system typowania**, że nie należy do żadnej ze standardowych kategorii (mnóstwo przykładów na WTFJS) * JavaScript jest **bardzo łagodny w tym, jak analizuje składnię** (średniki są opcjonalne itp.) Z punktu widzenia programisty, większość z tych decyzji projektowych utrudnia programowanie w JavaScript. Koncepcyjnie język JavaScript wydaje się o krok za Javą i dwa kroki za Pythonem i Ruby. Ale ponieważ nie wierzę, że ludzie stojący za JavaScript starają się stworzyć język, który jest trudny w użyciu, mogę tylko uzasadnić, że te punkty projektowe muszą mieć coś wspólnego z zamierzonym użyciem JavaScript jako języka skryptowego dla stron internetowych , głęboko związany z DOM. ** W jaki sposób (jeśli w ogóle) te punkty projektowe zaspokajają zamierzone przypadki użycia JavaScript? Jakie uzasadnienie kryje się za tymi pozornie przypadkowymi decyzjami projektowymi?**


title: Jak połączyć dane MongoDB i Neo4j?

text: Chcę wdrożyć system przechowujący profile pracowników i posiadane przez nich zasoby. Istnieje wiele rodzajów zasobów, takich jak dokumenty, które stworzyli, techniki, którymi dysponują... itd. Przechowuję właściwości węzłów i relacji na MongoDB, a relacje przechowuję tylko na Neo4j. Ale mam problem, jak mogę połączyć te dwie bazy danych? Na przykład, gdy chcę znaleźć znajomych A, którzy mają licencję JAVA w 2012 roku, muszę znaleźć id osób na MongoDB i użyć tego id do znalezienia znajomych na Neo4j, a następnie muszę sprawdzić, kto ma licencję JAVA w 2012 na MongoDB... Myślę, że jest to bardzo złożone i ma pewien problem z wydajnością, jak mogę go rozwiązać? Moim zdaniem prawdopodobnym rozwiązaniem jest przechowywanie danych zarówno na MongoDB, jak i Neo4j. Gdy chcę przeprowadzić złożone wyszukiwanie, mogę używać tylko Neo4j. Celem posiadania właściwości w Mongo jest to, że ma lepszą wydajność wyszukiwania według właściwości i myślę, że lepiej jest zarządzać danymi w MongoDB.


title: Metody strukturyzowania JavaScript SDK

text: Zbudowałem API REST i używam modeli Backbone w kilku różnych aplikacjach, aby się z nim komunikować. Naprawdę chciałbym zbudować pojedynczy JS SDK, który może być używany w dowolnej aplikacji, która zawiera ten kod wielokrotnego użytku. Zacząłem od utworzenia npm, bower i component.json, aby można je było łatwo zainstalować. Z tego, co mogę wywnioskować, celem jest stworzenie pojedynczego obiektu dołączonego do `okna` w celu uzyskania dostępu w innych aplikacjach. W tym momencie wszystko zostaje zamknięte. Mam kilka pytań i wątpliwości: 1. Czy jest coś, czego muszę unikać, aby uniknąć konfliktów z innymi bibliotekami? 2. Jak mam obsługiwać zależności? Czy powinienem je zahermetyzować, czy dać użytkownikowi znać, że musi to dodać? 3. Czy istnieją metody strukturyzowania SDK, które zapewniają podobne korzyści do, powiedzmy, MVC w aplikacji internetowej? **UWAGA:** Jeśli to pytanie nie jest zgodne z wytycznymi dla programrs.stackexchange.com, podaj wskazówki, jak je zmienić, a nie tylko je zamykać. Dzięki wielkie.


title: Czy wszystkie warunki wyścigu są warte naprawienia?

text: Właśnie napisałem następujący fragment kodu (w delphi): procedure Update(Value: Integer); begin // Jeśli ostatnia aktualizacja była wczoraj, zastąp wczorajszą wartość if CompareDate(FLastUpdate,Now) <> 0, a następnie zacznij FYesterdayValue := FTodayValue; koniec; FDzisiejszaWartość := Wartość; FLastUpdate := Teraz; koniec; I zdałem sobie sprawę, że zawiera mały, ale prawdziwy stan wyścigowy. Wyobraź sobie, że pierwsze wywołanie funkcji „Teraz” przypada na jedną milisekundę przed północą, instrukcja if jest pomijana, a znacznik czasu jest aktualizowany kolejnym wywołaniem funkcji „Now”, które jest teraz jedną milisekundą PO północy. Teraz znacznik czasu ma nieprawidłową wartość, a FYesterdayValue nie otrzyma prawidłowej wartości. W praktyce myślę, że szanse, że to się kiedykolwiek zdarzy, są prawie zerowe, ponieważ a) kod jest zwykle nazywany ~1 / minutę ib) czas procesora między dwoma wywołaniami będzie BARDZO mały. Jest to jednak błąd i jestem ciekaw, czy naprawiłbyś go, gdybyś natknął się na niego w projekcie.


title: Czy są jakieś wzory umów kontraktacyjnych online?

text: Kontraktowanie jest dość powszechne, więc wyobrażam sobie, że istnieje kilka gotowych szablonów umów kontraktowania oprogramowania. Szukam takiego, który modyfikuję pod moje potrzeby, przekazuję przez mojego prawnika i dostarczam klientom. Czy ktoś wie o dostępnych zasobach?


title: Czy warto używać Twitter Bootstrap 3 do produkcji?

text: Tak więc w ciągu ostatnich kilku tygodni zapoznałem się z Bootstrap 3-RC1. Zrobiłem z niego kilka stron internetowych i naprawdę mi się to podobało. Niedawno odkryłem, że Twitter Bootstrap wydał już wersję 3-RC2. Zastanawiam się, czy mogę teraz używać Bootstrap RC2 do produkcji? Czy mądrze jest używać go, biorąc pod uwagę, że jest jeszcze w fazie RC, czy powinienem poczekać na oficjalną, ukończoną wersję 3?


title: Wykonawca vs Konsultant

text: Dla programisty dwa z najczęstszych terminów, które wydają się być przeładowane, to wykonawca i konsultant? Czy jest jakaś różnica między nimi?


title: Metody identyfikowania i rozwiązywania wycieków pamięci w JVM

text: Ponieważ dane są migrowane na poziomie obiektów, obserwuje się powolny trend wzrostowy wykorzystania pamięci. Widzę okresową aktywność gc, ale trend pamięci wciąż powoli rośnie. Obecnie dla mojej aplikacji ustawiono początkową i maksymalną stertę na 14 GB w produkcji, jednak jeśli będziemy potrzebować dużego zestawu danych, obawiam się, że w końcu osiągniemy limit, a następnie aplikacja zwolni (co się stało) . Jakie są skuteczne sposoby i strategie dowodzenia, które pomagają zidentyfikować i naprawić potencjalny wyciek pamięci w uruchomionym procesie Java?


title: Twitter Bootstap: kompatybilność wsteczna?

text: Pracuję w uniwersyteckim zespole Digital Services. Główna strona naszej uczelni korzysta z Ektron CMS (mam na ten temat własne przemyślenia, ale to nieistotne). Ponieważ prowadzimy witrynę uniwersytecką, musimy upewnić się, że nasza witryna jest bardzo kompatybilna wstecz. Próbujemy podjąć decyzję, czy Twitter Bootstrap sprzyja temu, co staramy się zrobić. Po przejrzeniu odkryłem, że Bootstrap używa preprocesora CSS "*Less Css*". Obecnie używamy *SASS*, który kompilujemy przez terminal przy użyciu Kompasu Ruby. Wadą, nad którą się zastanawiam podczas używania *Mniej Css*, byłoby to, że kompiluje się przy użyciu Rhino i Node.js. Czy spowodowałoby to problemy, ponieważ 1. Less CSS używa Node.js do kompilacji; jeśli ktoś nie ma włączonego js w swojej przeglądarce, czy nie wyświetli CSS? 2. CSS musi się kompilować za każdym razem, gdy strona jest renderowana, czy spowolni to czas ładowania stron? Najbardziej atrakcyjne w użyciu są wtyczki systemu grid/glyphs/ i js, które są dostarczane z Bootstrapem, co jest dobre, ponieważ często musimy tworzyć nowe treści dotyczące wydarzeń i innych rzeczy dziejących się na uczelni. Jednak niezwykle trudno jest nam zrezygnować z kompatybilności krzyżowej. Jakie są zalety Bootstrapa? Jakie są wady Bootstrapa?


title: Rozpoczęcie eksploracji danych

text: Dla uproszczenia moja baza danych zawiera encje i transakcje. Każda transakcja ma DateCreated i klucz obcy do podmiotu. Chciałbym mieć możliwość znajdowania podmiotów, które miały powtarzającą się liczbę transakcji w bliskim sąsiedztwie innych podmiotów. Po prostu, jeśli podmiot A miał transakcję w ciągu 10 minut od podmiotu B, 5 różnych razy. Im więcej badam na ten temat, tym bardziej jestem zdezorientowany. Przejrzałem algorytmy eksploracji danych i samouczek eksploracji danych AdventureWorks. _Myślę_, że potrzebuję podejścia klastrowego. Przeważnie szukam wskazówek, jak zwykle podchodzi się do tego typu problemów. Ostatecznie moim celem jest umożliwienie użytkownikowi wybrania X minut i Y wystąpień oraz wyświetlenie im danych wynikowych. Jeśli mogę zaoferować więcej informacji, daj mi znać.


title: Jaki jest najlepszy sposób zarządzania sesjami Hibernate w aplikacji Struts-1?

text: Jestem teraz właścicielem aplikacji Struts-1, a zarządzanie sesjami Hibernate jest wszędzie. Przeszukałem dokumentację online, ale nie znalazłem jasnego wyjaśnienia najlepszego sposobu zarządzania sesjami Hibernate w aplikacji Struts. Przypuszczalnie sesja hibernacji powinna zostać utworzona (lub pobrana) na początku każdej akcji i transakcja otwarta, a następnie transakcja zatwierdzona lub wycofana na końcu akcji. Czy to jest poprawne? Jak można tym zarządzać dla wszystkich akcji bez duplikowania kodu w każdej akcji? Czy każda Akcja powinna pobierać obiekty z bazy danych, wywoływać funkcje modelu, a następnie zapisywać obiekty, ala Ruby on Rails?


title: Projektowanie i programowanie GUI w C++

text: Jestem zaznajomiony z podstawami i podstawami C++, a teraz chciałbym przejść do projektowania i kodowania funkcji GUI, interaktywnych dialogów itp., takich jak VB lub Delphi Od czego zacząć (podręcznik do samodzielnego uczenia się, samouczek online )? Dziękuję


title: Przygotowanie Web-Development i cały przepływ pracy nad projektem

text: Pracuję jako samotny programista przy projektach web-development (front i back-end) - ukończyłem kilka projektów, więc jestem w tym całkiem nowy, przeczytałem i wypróbowałem kilka podejść i osiągnąłem drogę do zrobienia o nich. Pytanie i mój opis są dość długie, więc proszę o cierpliwość. To, czego szukam, to: **1.** Przygotowanie/planowanie, które zwykle wykonuje się przed rozpoczęciem programowania, gdy już wiesz dokładnie, co należy zbudować. **2.** Z Twojego doświadczenia proszę o przesyłanie opinii/sugestii na temat procesu, który obecnie śledzę. Klienci, z którymi pracuję, to zazwyczaj start-upy i mają ograniczone budżety, więc nie mogę ich rozliczać w przeliczeniu na godzinę (myślę, że tak duże firmy zwykle rozliczają swoich klientów [za osobogodziny] za projekty rozwojowe) i muszą pracować z ustalonym budżetem. **Jest to proces, który obecnie śledzę :** **1.** Zmierz zakres projektu i spróbuj zrozumieć, co próbują osiągnąć podczas kilku spotkań. **2.** Daj im przybliżoną figurę z cytatem, który ogólnie opisuje, czego oczekują od projektu. Staram się mówić konkretnie o funkcjach, ale nie poświęcam na to zbyt wiele czasu ponieważ wiem, że klient może po prostu prosić o wycenę, a nie konwertować. **3.** Postępuję zgodnie z sugestią Jeffa Atwooda dotyczącą płatności i pracy : **15%** płatność - z góry przed rozpoczęciem jakiejkolwiek pracy Podczas tej fazy tworzona jest makieta HTML strony końcowej, schemat blokowy (z YEd) opisujący stronę tak szczegółowo, jak to możliwe, oraz dokument wymieniający inne funkcje, których nie ma na schemacie blokowym. Odbywa się to poprzez wchodzenie we wszystkie szczegóły projektu i finalizowanie części, które będą pasować i rzeczy, których wdrożenie jest zbyt pracochłonne za ustaloną cenę. Ponieważ szczegóły nie są omawiane wcześniej, niektóre z nich są również mniej więcej negocjacjami na temat tego, co faktycznie otrzymają. Ponieważ jest to projekt o stałym budżecie, wymagania muszą być stałe, w przeciwnym razie moja cena spada wraz z dodawaniem kolejnych funkcji. Sfinalizowana jest również kolorystyka, projekt szkieletu i projekt PSD. **35% płatności** \- Rozpocznij rozwój Projekt jest naprawiony, rozpocznij rozwój. Hostuję witrynę na moim serwerze, gdzie klient ma dostęp do frontonu, ale nie ma dostępu do żadnego kodu. **30% płatności** \- Przenieś kod na serwer klienta/podaj klientowi dane dostępowe do serwera Uruchom stronę. **20% płatności** \- Kilka tygodni po uruchomieniu strony, po naprawieniu wszystkich błędów. * * * **Pytania :** **1.** Kiedy już wiesz dokładnie, co zamierzasz zbudować, jaki rodzaj planowania zrobisz, zanim zaczniesz kodować? **2.** Z Twojego doświadczenia wynika, które części całego procesu zrobiłbyś inaczej?


title: Gdzie publikować artykuły o open source?

text: Rozwijałem darmowy, open source'owy projekt abstrakcji bazy danych Java (jOOQ) i wydałem pierwsze stabilne wydania od listopada 2010 roku. Informacje zwrotne były dość dobre i konstruktywne, a ja jestem bardzo zmotywowany do dalszej pracy. W międzyczasie, aby uzyskać więcej uwagi i opinii, publikowałem artykuły na * http://java.dzone.com/ * http://www.theserverside.com/ * http://www.infoq.com/ (nie opublikowali jednak mojego artykułu) Oto kilka przykładowych artykułów, więc znasz typ artykułu, który chcę opublikować: * http://java.dzone.com/ogłoszenia/proste-i-intuicyjne-podejście * http ://java.dzone.com/artykuly/2011-swietnie-lata-przechowywane Jakie inne zasoby polecasz? Gdzie indziej powinienem publikować, wiedząc, że * chcę dotrzeć do programistów Java/SQL i architektów / decydentów technologicznych * Mogę publikować w języku angielskim, niemieckim, francuskim * Myślę, że mój projekt jest odpowiedni zarówno dla początkujących, jak i dla profesjonalistów (w Javie i SQL, czyli ogólnie programowanie)


title: JAAS — do czego służy wymagana flaga kontrolna?

text: Usługa uwierzytelniania i autoryzacji Java (JAAS) określa, że jeśli moduł logowania ma flagę „WYMAGANE”, uwierzytelnianie powinno przebiegać w dół listy modułów logowania w przypadku powodzenia lub niepowodzenia, oraz że moduł jest wymagany do pomyślnego zakończenia całego procesu uwierzytelniania odnieść sukces. Pytanie brzmi: do czego może służyć ta flaga? Skoro moduł logowania jest wymagany do powodzenia, dlaczego proces uwierzytelniania musi być kontynuowany w dół listy modułów logowania, gdy moduł REQUIRED nie może uwierzytelnić podmiotu?


title: Ruch 2D obiektu w oparciu o prędkość i nowy wektor

text: Piszę małą grę, w której statek morski (np. pancernik) można przesuwać w przestrzeni 2D na podstawie otrzymywanych rozkazów. Chciałem wiedzieć, czy ktoś może mi pomóc skierować mnie do kodu pocztowego lub przykładowego, który pomoże mi przenieść statek z jednego miejsca do drugiego w oparciu o prędkość i nowy wektor. Tak więc, gdybym miał statek, który porusza się w kierunku południowo-zachodnim (powiedzmy 120 stopni) i otrzymuje nowe rozkazy, aby skręcić do nowego wektora 020 stopni, jak mogę obliczyć zwrot. Nie chcę, żeby się po prostu zakręcił i ruszył w nowym kierunku. Chcę, żeby wykonał szeroki zakręt (jakby był w wodzie), a kiedy osiągnie nowy wektor, zacznij podążać w tym kierunku. Każda pomoc byłaby mile widziana.


title: Jira Agile, jak określić gałąź lub wersję, w którą ma zostać wprowadzone ulepszenie lub historia

text: Po pierwsze jest to kopia mojego postu na PM Exchange PM Post. Uważam, że tablica jest bardzo nowa i chciałbym również mieć wkład od moich kolegów programistów, którzy mogą nie oglądać tablic PM. Wklejam drugą wiadomość poniżej. Dzięki chłopaki! ..... Jak radzisz sobie z informowaniem programistów, gdzie umieścić zmianę, niezależnie od tego, czy jest to błąd, czy nowa funkcja przy użyciu JIRA? Oto dlaczego pytam... W przypadku problemów/błędów myślę, że użycie pól Affects i Fix version nie jest prostsze, jeśli wersja poprawki to 2.5. Wiem, że kod musi przejść do gałęzi 2.5. Jednak dla mnie sformułowanie przynajmniej nie pasuje do tych pól dla historii i ulepszeń. Ulepszenie może mieć wpływ na przyszłą wersję, ale niczego nie „naprawia”. Używanie pól w inny sposób między błędami a ulepszeniami również wydaje się złym pomysłem? Myślę, że byłoby to mylące dla użytkowników? Oto przykład tego, co mam na myśli Błąd/Problem: ustaw wersję Fix na wersje, które ma naprawić ten błąd. Historia/ulepszenie: ustaw wersję Wpływy na miejsce, w którym chcesz, aby ta nowa funkcja była dostępna. W obu tych scenariuszach mówisz, gdzie umieścić kod. Używając różnych pól... i jeśli chcesz zacząć przeliterować GDZIE istnieje błąd (wersja 1 i 2, ale nie 1.5), użyj OBU pól dla błędu i jednego inaczej dla ulepszenia.


title: SOA w trakcie procesu?

text: Czy DI/IoC może być używany do uproszczonej, lokalnej architektury SOA? Czytałem o SOA (przykłady: tutaj, tutaj i tutaj) i wydaje się, że na początku dużo uwagi poświęcono interoperacyjności i umożliwieniu dystrybucji zadań przy użyciu standardowych formatów wiadomości i protokołów transferu (web- _services_ ) . Później sednem było osiągnięcie luźnego sprzężenia: znaleźć zasady partycjonowania logiki biznesowej, zarządzać zależnościami oraz jak i kiedy udostępniać dane między częściami. Czy to poprawny opis? Jak to się ma do DI/IoC? Czy w przypadku systemu o niskich wymaganiach wydajnościowych uproszczeniem byłoby użycie DI jako „brokera wiadomości” i asynchronicznych zdarzeń do „pub/sub” i tylko przerwania usługi i przejścia przez magistralę ESB lub tak, jak wymaga tego integracja?


title: Tworzenie asemblera

text: Zawsze interesowałem się tym, jak tworzy się języki programowania, więc przez ostatnie 8 miesięcy badałem, ćwiczyłem i więcej o tworzeniu kompilatorów. Udało mi się dość łatwo pisać frontendy dla języków i w ciągu ostatnich kilku miesięcy czytałem więcej o back-endach kompilatora. Poza tym czytałem i ćwiczyłem różne rzeczy z zestawem instrukcji x86. Moim marzeniem było napisanie kompilatora i chciałbym zrobić pierwszy duży krok w zrozumieniu backendów, próbując prostego assemblera x86. Moim celem jest dowiedzieć się więcej o generowaniu kodu, zestawie instrukcji x86, plikach wykonywalnych i znaleźć najlepsze algorytmy i techniki (nie odpowiadam na nic o interfejsie, mam to w dół, lol). W końcu, aby być usatysfakcjonowanym w moim postępie, chciałbym wyprowadzić plik wykonywalny dla mojej platformy (plik wykonywalny Ubuntu Linux amd64, ELF) napisany w języku asemblera. To trudne zadanie, chociaż czuję, że jestem gotowy z odrobiną krwi, potu i łez. Więc moje pytanie brzmi: co iw jaki sposób mój asembler musi robić rzeczy? Wiem, że musi przetworzyć rzeczywiste źródło, co? Ze wszystkiego, co zebrałem po przetworzeniu źródła, którego potrzebuję, wypisz nagłówek ELF, a następnie wyślij wygenerowany kod x86 po tym, prawda? Nie mogę znaleźć zbyt szczegółowych informacji na temat tego, jak kod x86 jest przechowywany w wykonywalnych lub nawet relokowalnych plikach obiektowych. Wiem, że są jakieś sekcje, ale nie mogę dowiedzieć się, jak są one wyrażane i do czego służą. Każdy, kto chce odpowiedzieć na którekolwiek z tych pytań lub wskazać mi właściwy kierunek, jest niesamowity, pracowałem nad tym od dawna.


title: Przejście z VS 2005 na VS 2010, czego się nauczyć o aplikacjach internetowych?

text: Po prostu przenoszę się z formularzy internetowych Visual Studio 2005 na 2010. Ostatnio trochę zdezorientowano, czego można się nauczyć w nowej wersji. Będę tylko robił aplikacje internetowe 1. Czy powinienem nauczyć się frameworka encji czy frameworku MVC dla moich nowych aplikacji przechodzących z prostych formularzy internetowych? 2. Czego radzilibyście się nauczyć jako o najwyższym priorytecie przy przejściu do Visual Studio 2010, co przyniesie mi największe korzyści?


title: Jak sprawdzić, które części kodu Java są uruchamiane najczęściej?

text: Chciałbym móc zobaczyć, jaki kod w tysiącach linijek kodu źródłowego jest uruchamiany najczęściej i zajmuje najwięcej czasu. Celem tego byłaby optymalizacja. Możliwość zobaczenia, które części kodu są uruchamiane najczęściej, jest ważna dla optymalizacji, ponieważ na tych częściach powinienem się skupić, aby przyspieszyć. Jednocześnie oczywiście niektóre kody są uruchamiane bardzo często, ale praktycznie nie zajmuje to czasu, dlatego ważne jest również, aby móc zobaczyć, który kod zajmuje najwięcej czasu. Myślę, że najlepszym z obu światów byłby program, który sumuje ilość czasu, jaką zajmuje fragment kodu, wliczając w to WSZYSTKIE razy, kiedy był uruchamiany (a tym samym dowiedzieć się, co najbardziej spowalnia twój kod). Czy są do tego jakieś narzędzia?


title: Wzorzec projektowy dla wielowątkowego modułu pobierania adresów URL w java

text: Szukam wskazówek i sugestii dotyczących projektu wielowątkowego pobierania adresów URL w javie. Szczegółowe wymagania to: * Okresowe pobieranie każdego z około 1000 adresów URL * Odstęp między każdym pobieraniem będzie zależeć od adresu URL * Odstępy mogą wynosić od 2 minut do 1 godziny Wyobrażam sobie, że będę potrzebować kilku programów pobierających, z których każdy działa własny wątek, który jest w stanie "gotowy" wypychać następny adres URL do pobrania. Będę musiał poradzić sobie z błędami, np. przestań odpytywać o konkretny adres URL, jeśli wielokrotnie się wygasza lub 404. Wszelkie pomysły są mile widziane. Dziękuję


title: Co to jest analiza zależności i jak to się robi?

text: Widziałem to w ogłoszeniu o pracę dla programisty ASP.net. „Zrozumienie podstawowych praktyk tworzenia oprogramowania, takich jak ... i analiza zależności”. Przeczytałem wpis w Wikipedii dotyczący analizy zależności i rozumiem, że zasadniczo oznacza to, że jedna rzecz zależy od drugiej, więc nie można ich zmienić ani zrównoleglić. Co to oznacza w praktyce? Czy istnieje narzędzie, które służy do przeprowadzenia analizy zależności? Co powinienem o tym wiedzieć na rozmowę kwalifikacyjną i w praktyce, jeśli dostanę pracę?


title: Czy są jakieś naukowo rygorystyczne badania zasad stylu kodowania?

text: Jest zasadą stylu kodowania - m.in. zasada pojedynczego wyjścia - naprawdę dobra rzecz? Zawsze, czy tylko czasami? Jaką to naprawdę robi różnicę? Niezależnie od opinii, są to oczywiście pytania subiektywne. Albo czy oni? Czy ktoś próbował przeprowadzić obiektywne, naukowo rygorystyczne studium zasad stylu kodowania? Nie potrafię sobie wyobrazić, jak ktokolwiek mógłby przeprowadzić podwójnie ślepe badanie czytelności, ale być może możliwe byłoby podwójne ignorancje - wykorzystaj uczniów, którzy nie wiedzą o badanej zasadzie jako przedmiotów, i nie-programistów do zarządzania badaniem.


title: Jak działa akceleracja sprzętowa CSS3?

text: Czy ktoś może mi powiedzieć, w jaki sposób niektóre kody css3 (przejścia/transformacje) są przyspieszane sprzętowo? Innymi słowy, co się właściwie dzieje, gdy przeglądarka widzi css3, jaki jest zaangażowany potok/proces?


title: Portfolio programistyczne backendu

text: Przez większość moich lat programistycznych byłem _programistą backendu Java_ , głównie dla aplikacji internetowych. Zwykle w przypadku zwykłych prac opisałem swoje obowiązki w poprzednich podczas rozmowy kwalifikacyjnej, rozszerzając to, co jest w moim CV. Teraz, jeśli chodzi o ewentualną pracę jako freelancer, poproszono mnie o portfolio, a potem mieliśmy rozmowę kwalifikacyjną. Nigdy wcześniej tego nie robiłem, mam wątpliwości, jak to zrobić, ponieważ umieszczenie w formie pisemnej wymaga dużo więcej przemyślenia: * Czy powinienem używać **diagramów UML** do opisania, nad którymi częściami projektu pracowałem na? Poza tym, że muszę nauczyć się UML, mam tutaj dwa problemy: pamiętanie dokładnej pracy sprzed kilku lat i zastanawianie się, czy mogę wpaść w kłopoty z wyświetlaniem wewnętrznych części systemów, które nie są moją własnością. Te diagramy UML powinny być od niskiego poziomu (diagramy sekwencji) do wysokiego poziomu (architektura aplikacji lub diagramy klas). Struktury, których użyłem w tych pracach, są już w moim CV. * Czy powinienem łączyć się z powstałymi witrynami internetowymi? Na przykład _przejdź do tej witryny, utwórz użytkownika, a następnie wykonaj następujące czynności_ , a zobaczysz, nad którymi częściami pracowałem. * Jak pokazać części mojej pracy, które nie wymagają kodowania? Jak prowadzenie innych ludzi, zarządzanie projektem, testowanie, uruchamianie skryptów, sprawdzanie bazy danych, czy wszystko jest w porządku itp. * Czasami musiałem też tworzyć frontend, używając Javascript. Przeczytałem tutaj inne pytania dotyczące portfolio, z których dowiedziałem się, że muszę unikać umieszczania moich projektów dla zwierząt z otwartym kodem źródłowym w moim CV, chyba że są popularne i szeroko stosowane (a nie są).


title: Jak zademonstrować wydajność w środowiskach programowania w parach?

text: Ostatnio w mojej pracy pojawiły się recenzje wydajności i znalazłem się w interesującej pozycji. Nasz zespół dużo zajmuje się programowaniem w parach, co ma tendencję do uśredniania różnic w umiejętnościach między członkami zespołu (szczególnie biorąc pod uwagę, że rotujemy parami). Ogólnie rzecz biorąc, robiąc przegląd wyników, spoglądasz wstecz na wykonaną pracę i pokazujesz, co osiągnąłeś i jak przekroczyłeś oczekiwania, próbując wynegocjować podwyżkę lub inne korzyści. Jak zademonstrować (lub nawet zmierzyć) indywidualne wyniki w takim środowisku?


title: Jak mogę zlecić podwykonawstwo z innym programistą?

text: Inny programista chce zlecić mi pisanie, testowanie i dokumentowanie kodu. Jeśli ktokolwiek ma bryłki mądrości, którymi mógłby się podzielić na temat układu biznesowego, z pewnością doceniłbym tę radę. Mój obecny plan polega na przejrzeniu specyfikacji i podzieleniu jej na produkty o stałej cenie, z definicją „ukończenia” polegającą na pomyślnym przejściu wstępnie określonego testu.


title: Dlaczego ludzie uważają, że SOAP jest przestarzały?

text: Podczas dzisiejszego przeglądania SO znalazłem to pytanie tutaj i zaczyna się od tego: > Jasne, powiesz mi, że SOAP jest przestarzały i wszystko, cóż, jestem zmuszony > go użyć. Znalazłem wiele takich stwierdzeń na SO up do tej pory to właśnie skłoniło mnie do zadania tego pytania. REST ma swoje zastosowania, SOAP ma swoje zastosowania, w niektórych miejscach przecinają się one jako funkcjonalność, ale nie są wzajemnie zastępowalne. Zastanawiam się więc, dlaczego ludzie myślą, że SOAP jest „przestarzałe”? Czy to ignorancja? Złożoność specyfikacji SOAP i WS-*? Reszta szumu? Co? Jeśli uważasz, że SOAP jest przestarzały, powiedz mi dlaczego. Jestem ciekawy!


title: Czy ciągłe szukanie przykładów kodu jest oznaką złego programisty?

text: Jestem studentem CS z kilkuletnim doświadczeniem w C i C++, a od kilku lat stale pracuję z Java/Objective C tworząc aplikacje, a teraz przerzuciłem się na tworzenie stron internetowych i skupiam się głównie na ruby na rails i doszedłem do wniosku, że (tak jak w przypadku tworzenia aplikacji, naprawdę) odwołuję się do innego kodu zbyt często. Ciągle korzystam z funkcji Google dla wielu rzeczy, które wyobrażam sobie, że powinienem być w stanie zrobić od zera i to naprawdę trochę złamało moją pewność siebie. Podstawowe podstawy nie są problemem, nienawidzę używać tego jako przykładu, ale mogę biegać przez javabat zarówno w java, jak i pythonie podczas sprintu - oczywiście nie jest to osiągnięcie, ale chcę powiedzieć, że mam mocną podstawę do podstaw Myślę? Wiem, czego zwykle potrzebuję, ale składnia odwołań jest stale. Chciałabym kilka rad i informacji na ten temat, ponieważ dość mocno powstrzymywało mnie to w poszukiwaniu pracy w tej dziedzinie, mimo że kończę studia. Moim głównym powodem, dla którego pytam, nie jest tak naprawdę kwestia zatrudnienia, ale co więcej, nie chcę być jedynym facetem na hackathonie, który nie wymyśla non-stop kodu i siedzi tam z otwartymi 20 zakładkami Google/github, a ja powstrzymałem się od uczestnictwa w żadnej z powodu niewielkiego braku pewności siebie... Czy dana osoba jest złym programistą, stale szukając przykładów kodu dla umiarkowanych lub złożonych zadań?


title: Czy czytanie i modyfikowanie istniejącego kodu jest lepsze niż tworzenie własnego?

text: Jestem niedoświadczonym programistą. Zostałem przydzielony do opracowania wtyczki do Firefoksa bez wcześniejszego doświadczenia. Więc skorzystałem z samouczka w MDN. Nauczyłem się tak wielu rzeczy, jest to jednocześnie ekscytujące i przytłaczające. Kiedy w końcu zacząłem programować, użyłem rozszerzenia, które dał mi samouczek, i zmodyfikowałem je. I po uświadomieniu sobie, że istnieje mnóstwo kodu, który w zasadzie robi wszystko, co musi zrobić moje rozszerzenie, przeanalizowałem te kody i wszczepiłem je do mojego z pewnymi modyfikacjami, które pasują do moich własnych potrzeb .... Więc tak, w zasadzie to, co ja Pytam: Czy spędzanie dużo czasu na obserwowaniu kodu innych ludzi i modyfikowaniu go zamiast na robieniu własnych poprawi moje ogólne umiejętności programistyczne?


title: Źle wygląda wyszukiwanie dokumentacji i próbek?

text: Rozpoczynam nową pracę w firmie z wieloma programistami i ludźmi od mediów, layout lokalu jest otwarty z komputerami wokół chudego owalu, pracowałem w małych zespołach i programuję osadzony C, praca jest dla celu C nadal jestem na średnim etapie, więc wiem, czego nie wiem (haha), to znaczy, że muszę to wygooglować, a następnie zaimplementować, więc pytanie brzmi, jak źle to wygląda, jeśli facet obok ciebie dużo szuka kodowanie Mam na myśli, że pod koniec dnia skończę pracę, ale chcę też wyglądać profesjonalnie!


title: Czy jestem programistą kopiuj/wklej?

text: Ilekroć utknę w jakimś konkretnym problemie, szukam rozwiązania w Google. A potem staram się zrozumieć kod i dostosować go do moich wymagań. Na przykład ostatnio zadałem pytanie Czytanie dokumentu xml w firefoxie w przepełnieniu stosu. Soufiane Hassou dał mi link do w3schools, gdzie znalazłem przykład parsowania dokumentu xml, rozumiałem, jak ten przykład działa, ale skopiowałem kod i dostosowałem go zgodnie z moimi wymaganiami, ponieważ nie lubię dużo pisać. Czy to czyni mnie programistą kopiuj/wklej? Jak powiedzieć, że dana osoba jest programistą kopiuj/wklej? Dziękuję.


title: Czy Googlowanie każdego kodu to zła praktyka?

text: Właśnie wróciłem z wywiadu, w którym zadano mi kilka pytań dotyczących programowania i rozwiązywania problemów. Jeśli chodzi o pytania dotyczące programowania, poprosiłem ich, aby pozwolili mi Google, abym mógł zobaczyć kod (zacytowałem, że logika jest rzeczą do nauczenia się, a nie język). Pod koniec wywiadu powiedzieli mi, że moje umiejętności są bardzo dobre, ale co bym zrobił, gdyby Google zostało zablokowane w naszym kraju (może się to zdarzyć w Pakistanie, Youtube jest jeszcze zablokowany). Czy to naprawdę, że programista też powinien znać kod?


title: Czy muszę zapamiętywać kodowanie w miejscu pracy, czy mogę wpaść na referencje, aby zapewnić mi przewagę do ukończenia mojego rozwoju?

text: Chciałbym wiedzieć, czy ode mnie wymaga się zapamiętywania kodowania w obszarze roboczym, czy też pozwalam na wpadanie w referencje, gdy nie mam pewności. W ciągu tygodnia nieustannego samokształcenia czuję, że rozumiem podstawy html i CSS, ale czy muszę zapamiętać każdy kod, gdy zdobędę pozycję w tej dziedzinie, czy też uczciwe jest używanie referencji, aby zapewnić Ci przewagę aby zakończyć swój rozwój. Zawsze miałam wrażenie, że trzeba wszystko kodować ręcznie, ale zastanawiam się, czy jeśli znajdę się w referencjach, będę wyglądać na mniej programistę. Rozumiem, że jeśli zapamiętam większość rzeczy, zaoszczędzę czas, który zajmie mi napisanie czegoś, ale nie chcę czuć się ukarany, jeśli będę musiał odwołać się do kodu, ponieważ muszę się odświeżyć. To pytanie programistów zawierało wiele dobrych odpowiedzi, ale nie pasują one do mnie. Moją rolą jest grafik/ilustrator, a nie programista, i wciąż jestem stosunkowo nowy w sposobie działania tego procesu. Zdecydowanie spodoba mi się silny wkład, aby upewnić się, że podążam właściwą ścieżką w mojej nauce Ponieważ HTML i CSS to tylko punkt wyjścia, chcę się wyróżniać również w innych obszarach. Dziękuję za poświęcenie czasu na przeczytanie mojego posta. PS (jeśli masz jakieś dodatkowe referencje lub porady, z chęcią to docenię)


title: Wydajność programisty

text: Jestem programistą PHP z rocznym doświadczeniem. Ponieważ dopiero zaczynam swoją karierę, uczę się teraz wielu rzeczy. Mogę powiedzieć, że jestem trochę perfekcjonistą. Kiedy przypisano mi problem, zaczynam od Google. Potem, nawet gdy znajdę rozwiązanie, próbuję znaleźć lepsze, aż znajdę 2-3 opcje. Potem zaczynam się tego uczyć i wybieram najlepsze rozwiązanie. Chociaż dużo się uczę, ten proces sprawia, że jestem określany jako osoba o słabych wynikach. Moje pytania: 1. Czy jako nowicjusz powinienem nadal korzystać z tego procesu uczenia się i nie martwić się o swoje wyniki? 2. Czy powinienem skupić się bardziej na wydajności, a mniej na tym, jak działa kod?


title: Jakie masz doświadczenia z komercyjnymi bibliotekami firm trzecich?

text: Zastanawiam się nad zakupem biblioteki Infragistics dla projektu, nad którym pracuję, ale nigdy wcześniej nie korzystałem z biblioteki innej firmy w moim kodzie. Czy jest to coś, co poleciłbyś? Czy kiedykolwiek miałeś z nimi problemy? Na co powinienem uważać?


title: Czy istnieje rodzaj programów ilustrujących większość funkcji i zastosowań różnych języków programowania?

text: Wszyscy wiemy, że „Szybki brązowy lis przeskakuje nad leniwym psem” używany jako punkt odniesienia dla drukowania i czcionek. Zastanawiam się, czy istnieje podobny „leniwy pies” dla języków programowania. Jest tak wiele różnych języków programowania, z różnymi funkcjami i składniami, podobnymi lub różnymi. Problem polega na tym, że użytkownik będzie zdezorientowany, używając jednocześnie różnych języków. Chociaż między różnymi językami jest wiele różnic, musi być coś wspólnego, np. zadanie lub rutyna. Jeśli zrealizujemy to samo zadanie w różnych językach i spróbujemy objąć najczęściej używane funkcje, to nauka języka lub porównywanie stanie się znacznie prostsze. Ten rodzaj programu nie musi być bardzo długi, podobnie jak samouczek, ale musi być dość powszechny i abstrakcyjny. Czy to istnieje?


title: @metoda statyczna a funkcja na poziomie modułu

text: Nie chodzi o `@staticmethod` i `@classmethod`! Wiem, jak działa „metoda statyczna”. To, co chcę wiedzieć, to właściwe przypadki użycia dla `@staticmethod` vs. funkcji na poziomie modułu. Wygooglowałem to pytanie i wydaje się, że istnieje ogólna zgoda, że funkcje na poziomie modułu są preferowane w stosunku do metod statycznych, ponieważ są bardziej pythoniczne. Metody statyczne mają tę zaletę, że są powiązane ze swoją klasą, co może mieć sens, jeśli tylko ta klasa ich używa. Jednak w Pythonie funkcjonalność jest zwykle zorganizowana według modułu, a nie klasy, więc zwykle robienie z niej funkcji modułu ma również sens. Metody statyczne mogą być również przesłonięte przez podklasy, co jest zaletą lub wadą w zależności od tego, jak na nie patrzysz. Chociaż metody statyczne są zwykle „czysto funkcjonalne”, więc ich omijanie może nie być mądre, ale czasami może być wygodne (chociaż może to być jedna z tych „wygodnych, ale NIGDY NIE ROBIĆ” rzeczy, których nauczy Cię tylko doświadczenie). Czy istnieją jakieś ogólne zasady dotyczące używania metody statycznej lub funkcji na poziomie modułu? Jakie konkretne zalety lub wady mają (np. przyszłe rozszerzenie, rozszerzenie zewnętrzne, czytelność)? Jeśli to możliwe, podaj również przykład.


title: Przechowywanie danych w 2 różnych systemach/strukturach baz danych

text: Moja firma jest sprzedawcą internetowym i korzystamy z platformy e-commerce homebrew. W ciągu ostatniego roku nawiązaliśmy współpracę z dostawcą oprogramowania księgowego, ponieważ nasze rozwiązanie homebrew nie było w stanie generować raportów zgodnie z potrzebami ani w inny sposób spełniać żądań banków i inwestorów. Z oprogramowaniem zaczynamy trudny początek, ale zastanawiam się, czy takie jest nasze podejście. Obecnie przechowujemy kompletny zestaw danych w bazie danych połączonej z naszą platformą e-commerce. Co noc wysyłamy niezbędne wywołania API, aby zsynchronizować nasze podmioty w oprogramowaniu księgowym (zamówienia, zamówienia, faktury itp.), a każdego ranka tworzyłem skrypty, które weryfikują poprawność danych między dwoma systemami. Ten zbiorowy system był koszmarem, ponieważ wszelkie drobne zmiany na platformie e-commerce kaskadują w brutalny i okropny sposób do systemu B. Powoduje to MNÓSTWO pracy z mojej strony, aby codziennie wprowadzać poprawki. Czy istnieje właściwy sposób podejścia do tego problemu? A może problem naprawdę leży w naszej decyzji o powielaniu danych między dwoma systemami. Czy komuś udało się zrobić coś podobnego? Od 3 miesięcy trwają nieprzerwane ćwiczenia przeciwpożarowe i każda porada byłaby bardzo mile widziana.


title: Użyć wstrzykiwania zależności dla obiektów danych?

text: Właśnie uczę się o wstrzykiwaniu zależności i utknąłem na czymś. Dependency Injection zaleca wysyłanie klas zależnych przez konstruktor, ale zastanawiam się, czy jest to konieczne dla obiektów danych. Ponieważ testowanie jednostek jest jedną z głównych zalet DI, czy obiekt danych, który przechowuje tylko dane, a nie żadne procedury, nigdy nie byłby testowany jednostkowo, co czyni DI niepotrzebną warstwą złożoności, czy nadal pomaga w pokazywaniu zależności, nawet z obiektami danych? Klasa DO{ DO(){ DataObject2List = new List<DO2>(); } ciąg publiczny Pole1; ciąg publiczny Field2; public List<DO2> DataObject2List; } Klasa DO2{ public DateTime Data; publiczna podwójna wartość; }


title: Czy realistycznie byłoby, gdyby programista-amator uzyskał stopień CS w ciągu 2~2,5 lat na państwowym uniwersytecie?

text: Czy byłoby realistyczne, gdyby niedojrzały programista uzyskał stopień CS w ciągu 2~2,5 lat na państwowym uniwersytecie, zakładając, że ma czas i pieniądze?


title: J2EE — bezpieczeństwo na poziomie pola oparte na rolach dla kompletnej aplikacji internetowej

text: Posiadam rozbudowaną stronę zaprojektowaną przy użyciu Spring MVC oraz MyBatis. Interfejs użytkownika jest bardzo złożony i mamy wiele niestandardowych widżetów - kalendarze, listy, wykresy itp. Gdybyśmy mieli wdrożyć zabezpieczenia oparte na rolach na poziomie pola, jakie opcje są dostępne zarówno z perspektywy front-endu, jak i back-endu?


title: Licencja: bezpłatna, ale nie wolno jej modyfikować ani rozpowszechniać

text: Udostępniam aplikację bezpłatnie, ale nie udzielam użytkownikom prawa do modyfikowania lub redystrybucji kodu. Jak mam to nazwać? Początkowo użyłem terminu „wolna licencja”, ale po namyśle uważam, że jest to mylące, ponieważ wolne może mieć kilka znaczeń, a w ludzkich umysłach często kojarzy się z open source. Czy istnieje lepsza terminologia dla mojej sprawy?


title: Jak poradzić sobie z drobną zmianą w kodzie źródłowym powodującą nieciągłość w drzewie wersji?

text: Na przykład mam plik ze słabym wcięciem (przynajmniej niespójnym z resztą projektu). Jeśli poprawię wcięcie i zatwierdzenie, w pewnym momencie nastąpi poważna zmiana w pliku, co spowoduje, że różnice między wersjami przed i po tej poważnej zmianie będą trudne do odczytania. Jak sobie radzisz z tym królem drobnych logicznych modyfikacji powodujących duże różnice?


title: Jak odnieść się do najmniejszej możliwej wartości niezerowej?

text: W czasach programowania w C myślałem, że istnieje stała lub funkcja (nie pamiętam, jak się nazywała, nazwijmy ją `SMALL`), której wartość była najmniejszą możliwą wartością dodatnią. (Wyobraź sobie, że LSB = 1 i wszystkie inne bity = 0.) Został użyty, aby uniknąć błędu dzielenia przez zero. Załóżmy na przykład, że chcesz obliczyć `z = x/y`. Następnie możesz obliczyć `z = x / (y + SMALL);` Czy istnieje wbudowana funkcja w MS EXCEL, która implementuje `SMALL`? Zresztą, czy istnieje w C/C++, czy też wariuję?


title: Młoda kariera z ofertą pracy - zachowaj dotychczasową pracę lub odejdź na nową

text: Niedawno przeprowadziłem rozmowę kwalifikacyjną na stanowisko w dużej firmie z listy Fortune 500 z polecenia znajomego. Wczoraj złożyli mi ofertę za 55 tys. Obecnie pracuję w małej 35-osobowej firmie, która zarabia 50 tys. Byłem tam przez sześć miesięcy, a rok i dwa miesiące temu zostałem oficjalnie przekształcony w pełnoetatowego pracownika (pracowałem na pełnym etacie jako stażysta, ale nie miałem żadnych świadczeń). Plusy firmy, w której aktualnie pracuję: * Mała, mogę porozmawiać bezpośrednio z szefem lub odciągnąć go na bok, kiedy tylko chcesz * Szeroki zakres obowiązków - mogę przejść od rozwoju .Net do pracy na bazie danych w dowolnym momencie. Może zaprogramować jedną minutę i porozmawiać z naszym klientem w celu wyjaśnienia następnej. * Bardzo wygodny. Kocham ludzi, z którymi pracuję. Otrzymujemy wiele niesamowitych małych korzyści, które przyniesie mała firma. Atmosfera rodzinna - bardzo blisko z kim pracuję. * Excel w pracy. Robię to, co robię bardzo dobrze. Jest przyszłość w zakresie bezpieczeństwa pracy. * Namiętny. Uwielbiam to, nad czym pracuję - aeronautykę. To fascynujące. Wielka firma zajmuje się handlem akcjami, a ja w ogóle nie dbam o tę dziedzinę - obawiam się, że będę się z tego powodu nudzić. * Godziny urlopowe. 24 vs 12 w nowej firmie. Plusy dużej firmy: * Pracuj z dwoma wspaniałymi przyjaciółmi. Osobiście potwierdzili, że naprawdę lubią tę pracę. * Lepsze wynagrodzenie, lepsze świadczenia. * Znacznie przyspieszony rozwój zestawu umiejętności. Tam, gdzie mała firma pozwala mi wyćwiczyć szeroki wachlarz umiejętności, ta firma ostatecznie uczyni mnie lepszym programistą, ponieważ czuję, że nie uczę się tak dużo, jak powinienem - nie są do końca aktualne na niektórych wyższych koncepcje programowania poziomu. * Rozpoznawalna nazwa może później trafić do drzwi, aby uzyskać lepszą pracę w innym miejscu. Decyzja mnie rozbiła. Nie bardzo wiem, co robić. Rada? Nie planuję zostać na zawsze w małej firmie, ponieważ chciałbym jechać w miejsce, które zmusza mnie do większego wysiłku i pozwala mi się wiele nauczyć, ale po prostu nie jestem pewien, czy to jest miejsce, do którego chcę skoczyć . Czy powinienem, czy powinienem dalej szukać?


title: Co umieszczasz w sekcji „Umiejętności obsługi komputera” w swoim CV?

text: > **Możliwe powielenie:** > W którym momencie „znasz” technologię na tyle, by umieścić ją w CV Mam problem z wybraniem dokładnie tego, co mam umieścić w sekcji dotyczącej umiejętności obsługi komputera w moim CV. Czuję potrzebę wymienienia wielu języków i środowisk IDE, z którymi pracuję, i być może wspomnieć, że również używam Mercurial. Ale to wydaje się, no cóż, trochę fałszywe; w końcu gdzie mam postawić granicę na liście języków? Jasne, nauczyłem się trochę C na zajęciach, mogę podbić kilka prostych projektów printf i getchar, ale tak naprawdę nie sądzę, żeby liczyło się to jako możliwość umieszczenia go w moim CV. Wydaje mi się, że przypominam sobie, jak Joel lub Jeff zajmowali się tym, ale nie mogę tego teraz znaleźć. Ale jestem prawie pewien, że powiedzieli coś w stylu: nie umieszczaj tego w swoim CV, jeśli nie chcesz, aby ktoś cię na nim wiercił. Cóż, na pewno nie chciałbym być ćwiczony w C... Ale czy nie ma uzasadnienia w moich językach aukcji, takich jak C#, z którymi nie pracuję codziennie, ale mogę wrócić po krótkim odświeżeniu? To znaczy, nie chciałbym być drążony o wewnętrznych elementach .NET, ale myślę, że uzasadnione jest wymienienie tego na liście języków, których używałem... Jak podejmujesz decyzję? Co masz w swoim CV w sekcji „Umiejętności obsługi komputera”? (czy możesz znaleźć posty Joela/Jeffa, o których myślę, jeśli istnieją?)


title: Ile powinienem wiedzieć o Hibernate przed dodaniem go do mojego CV / CV?

text: > **Możliwy duplikat:** > W którym momencie „znasz” technologię na tyle, aby umieścić ją w CV Wstrzymywałem się z dodaniem Hibernate do mojego CV (życiorys, dla amerykańskich czytelników), ale dopiero zbliżamy się do koniec projektu, w którym z powodzeniem go wykorzystaliśmy i być może nadszedł czas, aby to dodać. Nie wiem, czy omówiliśmy wszystkie typowe części tego produktu, bo to był mój pierwszy taki projekt. Czy ktoś mógłby wymyślić listę głównych cech, bez wiedzy o takich, które popadłbym w smutek podczas hipotetycznej rozmowy kwalifikacyjnej?


title: Metryki: komentarze a udokumentowany interfejs API

text: Zostałem poproszony o uruchomienie pewnych metryk kodu w celu oceny jakości kodu. Jeden ze wskaźników został niejasno określony jako „komentarze”. Uruchomiłem Sonar w swoim kodzie i chociaż uzyskałem 10% na metryce „comments/loc ratio”, 50% na metryce „udokumentowane API” (co daje liczbę metod/klas/zmiennych instancji z komentarzami javadoc ). Postaram się przekonać managera i klienta, że metryka „udokumentowane API” jest bardziej istotna niż pierwsza w szacowaniu jakości kodu, zwłaszcza, że celem metryk jest ocena możliwości utrzymania projektu w przypadku, gdyby inny zespół wziął to. Czy masz badania/opinie na temat tego, który z tych dwóch wskaźników jest bardziej odpowiedni do oceny jakości i możliwości konserwacji kodu? Mogłem ich użyć jako narzędzi perswazji. Dziękuję Ci


title: Jak doskonalić się jako web developer?

text: Jakie technologie, techniki i sposoby myślenia byłyby najbardziej korzystne dla twórców stron internetowych? Jestem stosunkowo nowym programistą i tylko 3 miesiące pracuję w firmie zajmującej się tworzeniem stron internetowych. Odkąd zacząłem, nauczyłem się wspaniałego świata kontroli wersji za pomocą Gita i tego, jak użyteczna może być linia poleceń. Nauczyłem się również świata dobrego, dobrego edytora, takiego jak Eclipse, dzięki wyszukiwarce RegEx i wyszukiwaniu oraz kilku innym funkcjom, z których faktycznie korzystam. Zastanawiam się, jakich innych rzeczy, których nauczyłeś się przez lata, które były naprawdę pomocne i które mogą mieć zastosowanie dla programisty stron internetowych? Pracuję głównie w PHP i językach frontendowych (HTML/CSS/JS).


title: Dlaczego pkg_resources nie znajduje bloom w moim virtualenv?

text: Próbuję włamać się do systemu kompilacji bloom ROS (https://github.com/ros-infrastruktura/bloom). Po wprowadzeniu kilku zmian buduję go i instaluję na virtualenv, aby przetestować go za pomocą python setup.py build python setup.py install --root /path/to/my/virtualenv Jednak raz w moim virtualenv, robi to nie działa, ponieważ pkg_resources nie może znaleźć modułu. Co ja tu robię źle? (virtual-bloom)[asinha@localhost virtual-bloom]$ yolk -l Python - 2.7.5 - aktywny rozwój (/usr/lib64/python2.7/lib-dynload) bloom - 0.4.4 - aktywny pip - 1.3. 1 - aktywne setuptools - 0.6c11 - aktywny wsgiref - 0.1.2 - aktywny rozwój (/usr/lib64/python2.7) yolk - 0.4.3 - aktywny (virtual-bloom)[asinha@localhost virtual-bloom]$ ./ bin/bloom-generate Traceback (ostatnie ostatnie wywołanie): Plik "./bin/bloom-generate", wiersz 5, w <module> z pkg_resources importuj plik load_entry_point "/usr/lib/python2.7/site-packages/ pkg_resources.py", wiersz 2805, w <module> working_set.require(__requires__) File "/usr/lib/python2.7/site-packages/pkg_resources.py", wiersz 696, w require required = self.resolve(parse_requirements (wymagania)) Plik "/usr/lib/python2.7/site-packages/pkg_resources.py", wiersz 594, w rozwiązaniu podniesienia DistributionNotFound(req) pkg_resources.DistributionNotFound: bloom==0.4.4 (virtual-bloom)[asinha@localhost virtual-bloom]$ ls bin include lib lib64 usr (virtual-bloom)[asinha@localhost virtual-bloom]$ I' Domyślam się, że z jakiegoś powodu nadal patrzy na pakiety witryny systemowej. Użyłem flagi `--no-site-packages` podczas tworzenia virtualenv: virtualenv virtual-bloom --no-site-packages --verbose


title: Jak zaprojektować grę karcianą?

text: Nie potrafię wymyślić dobrej architektury do mojej gry karcianej. Potrzebuję pomocy, aby zrozumieć, jak zwykle projektuje się gry. Najpierw opiszę zasady gry. ### Konfiguracja zasad gry * W grze jest czterech graczy, z których każdy tworzy drużynę. * Każdy gracz otrzymuje 12 potasowanych kart * Na stole (rzeka) znajdują się 4 zaślepione karty * Kolejność graczy jest taka ![wpisz tutaj opis obrazka](http://i.stack.imgur.com/F0Av1.png) Zakłady * Każdy gracz może spasować lub wybrać liczbę większą niż obecny zakład między 100 a 160 * Zakłady rozpoczynają się od pierwszego gracza i kółka aż do przejścia zespołu * Gdy gracz spasuje, nie może już obstawiać * Drużyna, która wygra rundę licytacji powinna przynajmniej zebrać punkty równe ich zakładowi, aby wygrać mecz * Drużyna, która przegrała rundę licytacji, nie powinna pozwolić swojej drużynie na osiągnięcie celu * Jeśli drużyna, która wygrała rundę licytacji, zdobędzie wszystkie punkty, druga drużyna otrzyma punkty ujemne równe ich zakład * jeśli drużyna, która przegrała rundę licytacji zbierze wszystkie punkty, druga drużyna otrzyma podwójne punkty ujemne ### Przebieg gry i zbieranie punktów * Gracz, który wygrał rundę licytacji ( **król** ) otrzymuje cztery pozostałe karty na stół. * Następnie może zapisać zestaw czterech kart w swoim banku kart drużynowych, nawet nie grając nimi. * Król wybierze kolor jako **kolor władcy** i poinformuje innych, że * Król rozpoczyna grę kładąc kartę ze swojej ręki na stole. Każdy inny gracz powinien grać w tej kolejności * jeśli ma na ręce ten sam kolor tej karty, musi zagrać jedną z tych kart * jeśli jej nie ma, może zagrać w dowolnym innym kolorze * Po wszystkich innych graczach zagrali swoje ręce, zwycięzcą rundy zostanie: * Ten, który ma najwyższą kartę, jeśli wszystkie karty są takie same * Ten, kto ma najwyższą kartę „linijki”, jeśli jest jakaś * Zwycięzca rundy zbierze karty i włoży je do ich bank * Gracz, który wygrał poprzednią rundę, rozpocznie kolejną rundę * Będzie to kontynuowane, dopóki wszystkie karty nie będą puste ### Zliczanie punktów * Zwycięstwo w każdej rundzie ma 5 punktów. Oznacza to, że każde 4 karty ma co najmniej 5 punktów. * Każdy As, 10 lub 5 w banku dodaje 5 punktów # Mój projekt ## Klasy class Card { string suit; string rank } class Deck { Lista kart = []; Lista kolorów = ['S', 'H', 'D', 'C']; Lista rang = ['1', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K ', 'A']; private void init(){..} void shuffle(){...} } class Gra{ Deck deck = new Deck(); Gracz gracz1; Gracz gracz2; Gracz gracz3; Gracz gracz4; int _isOn = 0; Gra(ten.gracz1, ten.gracz2, ten.gracz3, ten.gracz4){ deck.makeCards(); talia.przetasuj(); początek(); } void start(){ player1.cards.addAll( deck.cards.getRange(0, 12) ); player2.cards.addAll( deck.cards.getRange(12, 24) ); player3.cards.addAll( deck.cards.getRange(24, 36) ); player4.cards.addAll( deck.cards.getRange(36, 48) ); deck.cards.removeRange(0, 48); } String toJson(){ } String toString(){ } } class Player{ String name; punkty int; Lista kart = []; Gracz(ta.nazwa, {ta.punkty}); String toJson(){} String toString(){} } ### Mój problem Teraz, gdy zdefiniowałem wszystkie te klasy, nie wiem, jak powiązać te definicje z bazą danych (np. Mongo) i kontrolować przebieg gry. * Gdzie powinna iść cała ta logika? * Jak powinienem zachować stan w scenariuszu serwer/klient? Uwaga: do programowania tego używam Darta, ale nie chcę, aby odpowiedzi były pisane w Dart.


title: Zbieracze śmieci i wskaźniki / referencje

text: Jestem trochę zdezorientowany zarówno wskaźnikami, jak i odniesieniami. Z mojego zrozumienia wskaźniki są adresami w pamięci. Jeśli przekażę zmienną za pomocą wskaźników i odniesienia do funkcji, wszelkie manipulacje zmienną w funkcji zmienią oryginalną zmienną. Czytałem w Internecie, że przekazywanie przez odniesienie nie jest zalecane, ponieważ może łatwo uzyskać niechlujny kod. Przeczytałem też tutaj (http://stackoverflow.com/questions/7058339/c-when-to-use-references-vs-pointers), że powinniśmy unikać wskaźników, jeśli możemy. Moje pytanie brzmi, kiedy należy używać wskaźników i referencji? Wiem, że wskaźniki są używane w Xcode do silnych odwołań i liczenia odwołań. Skoro języki wyższego poziomu, takie jak c#, mają garbage collector, czy to oznacza, że nie powinniśmy nigdy używać w nich wskaźników i referencji?


title: Czy plik PHP na serwerze GoDaddy jest wystarczająco bezpieczny, aby na stałe zakodować w pliku sól AES?

text: Więc tworzę web api dla aplikacji, którą tworzę. Dane są oczyszczane przed wysłaniem do mojego internetowego interfejsu API, a następnie szyfrowane, zanim zostaną zapisane na moim serwerze MySql. Aplikacja na telefon oczyszcza, a następnie zakulisowe połączenia -> web php api, które szyfruje styl aes za pomocą zakodowanej na twardo soli, a następnie dzwoni -> serwer. Moje pytanie brzmi, czy na stałe zakoduję wartość soli na stronie php, czy jest to zagrożone na tatusiu serwer? Mam na myśli, że wiem, że NIC nie jest naprawdę bezpieczne, ale jakie są szanse, że ktoś będzie w stanie zhakować serwer go tatusia i zobaczyć mój kod źródłowy php. Zakładając, że zdemontują moją aplikację i zobaczą wywołanie adresu URL do interfejsu API. Skoro kod php jest wykonywany na serwerze to zakładam, że nie ma sposobu na jego rozpakowanie?


title: Implementacja wektora w czystym C

text: Implementuję wektor w C. Robię to dla zabawy programowania, nauki i wykorzystania struktury danych w późniejszych projektach. To nie jest praca domowa. Moje pytanie dotyczy metodologii, niekoniecznie implementacji, dlatego tak naprawdę nie szukam przeglądu kodu. Przeczytałem teraz wiele przykładów implementacji i większość z nich przyjmuje rozmiar pojedynczego elementu jako argument do funkcji `Vector_create()` i używa tego do późniejszych wywołań `memmove()`/`memcpy()` i co nie i mniej więcej zachowuje (na przykład) elementy wektora w ciągłej pamięci. Innymi słowy, podstawowa tablica jest zasadniczo pojedynczą „pustką*”. W implementacji, którą napisałem, zanim przyjrzałem się, jak zrobili to inni ludzie, zezwalam (zmuszam) kod klienta na przydzielenie „obiektu” i przekazanie go jako wskaźnika do funkcji `Vector_append()`. Więc moja podstawowa tablica to `void**`. _Więc myślę, że prawdziwe pytanie, które zadaję, brzmi, czy to jest złe._ Źle, tak jak w najlepszych praktykach. Widzę, że "normalny" sposób robienia tego nie używa tablicy wskaźników, a zamiast tego kopiuje pamięć struktury (na przykład) do podstawowej tablicy `void*`, a tym samym utrzymuje rzeczywiste dane elementów ciągłych , jak wcześniej wspomniano. Mój sposób pozwala uniknąć bałaganu `memmove()`/`memcpy()`, ponieważ po prostu kopiuję wartości wskaźników, jednak zmuszam klienta do `malloc()` wszystkiego, co jest wysyłane do wektora, a tym samym robię kupa kręcenia się na kupie. Zgodnie z tymi liniami wywołuję `free()` na bazowym elemencie danych, gdy element jest usuwany, więc biblioteka wektorowa wykonuje `free()`, na której biblioteka wektorowa nigdy nie robiła oryginalnego `malloc()`. _Czy to też jest zła praktyka?_ Jedyny problem, w który wpadam, to obecność zmiennej składowej (z braku lepszego terminu), która wskazuje na pamięć dynamiczną w strukturze. Następnie obowiązkiem klienta staje się „uwolnienie()” tych danych, ale ponownie, sama struktura jest uwalniana z wywołania biblioteki wektorowej „Vector_remove()”.


title: Czat o dużym natężeniu ruchu - jak sprawdzić, czy pojawiła się nowa wiadomość i pokazać ją wszystkim użytkownikom

text: Miałem już pytanie na ten temat, ale oczywiście nie zostało to zbyt dobrze przyjęte, najwyraźniej zbyt długie, gdy w rzeczywistości jest to więcej informacji, więc mogłeś udzielić mi lepszej odpowiedzi. Ok, teraz powiem o wiele jaśniej. Najlepsza możliwa logika rozwoju skalowalnego czatu pod względem stabilności, przechowywania/odczytywania wiadomości na czacie, aktualizowania czatu na nowej wiadomości dla wszystkich użytkowników itp.? Mam większość tego rozwiniętego, logika, za którą tęsknię, to -> sprawdź, czy jest nowa wiadomość i pokaż ją wszystkim użytkownikom. Mam to zaimplementowane, ale powoduje awarię witryny z powodu ruchu 300k-400k osób, więc to jest moje główne pytanie. Czat jest oparty na PHP i używa Pushera (www.pusher.com) do przesyłania wiadomości błyskawicznych, ale brakuje mu tego, czego potrzebuję, ponieważ jest bardziej jak gniazdo sieciowe. * * * Używam plików zakodowanych na sztywno do przechowywania wiadomości (chcę unikać bazy danych w jak największym stopniu). Jest to plik bez rozszerzenia, na pewno wiesz. Dostaję awarię przy $fp = fopen(..., "w"); // udawaj ... to ścieżka i nazwa pliku fwrite($fp, $msg); //zakoduj wiadomość na stałe fclose($fp); gdzie `$msg` jest samą wiadomością. Mam 1 plik na wiadomość. Pokazuję 150 ostatnich wiadomości = 150 dostępów do plików i odczytów, tak, to chyba za dużo. Teraz mam lepszą logikę, którą śledzę i jest to 1 plik z ostatnimi 50-100 wiadomościami przez cały czas. Jasne, że powinno być znacznie lepiej. Jak to się zawiesza, to najtrudniejsza część, ponieważ wszystko wydaje się zwyczajne, uwierz mi, że trudno mi określić, co dokładnie powoduje awarię witryny, ale po około 5 minutach, kiedy próbuję otworzyć witrynę, zniknęła, a następnie wstawiam starą zawartość bez czatu i znów jest online. Mam post jquery co 1 sekundę, aby sprawdzić, czy jest nowa wiadomość. Używam znacznika czasu w specjalnym pliku, w którym przechowuję czas wysłania ostatniej wiadomości i `if ((time() - czas w pliku) <= 2)` = przeładuj ostatnie 150 wiadomości, w tym ostatnią. Zbyt dużo wejścia/wyjścia, pisania/odczytu lub jakkolwiek, aby to powiedzieć, myślę, że powoduje awarię witryny.


title: scipy.stats.percentileofscore() niepoprawny?

text: Jestem naukowcem zajmującym się danymi i python noob, ale wydaje mi się, że znalazłem błąd w scipy.stats.percentileofscore. może to być "zgodnie z projektem", ale proszę o wyrozumiałość. jeśli masz tablicę, dostaniesz górną granicę 100, ale nigdy dolną granicę 0. Najniższy uzyskany percentyl to 100/len, więc jeśli mam tablicę 30 elementów, najniższy otrzymany percentyl to 100/30 ==> (3), więc mam obejście, które pozwala na wynik zerowy percentyl. czy moje obejście jest ważne? czy jest coś, co robię źle? proszę zasugerować. Zwróć też uwagę, że liczby w zakresie od 0,0 do 1,0 (nie lubię używać wartości od 0 do 100 dla wartości procentowych) stochState.kSlopePercentile = scipy.stats.percentileofscore([ stochHist.kSlope for stochHist in stochState.history],stochState.kSlope) / 100.0 invHistLen= 1.0/len(stochState.history) if(stochState.kSlopePercentile < 1.0): stochState.kSlopePercentile -= invHistLen. invHistLen) powyższy kod odejmuje do 1/len od percentyla (im bliżej percentyla jest do zera)


title: Radzenie sobie z nie do naprawienia niekończącym się projektem

text: Mamy dużą (ponad 1200 godzin) stronę internetową, która ma **dużo** długu technicznego. Jest to spowodowane głównie następującymi (zwykłymi) przyczynami. 1. Wielu programistów, którzy przychodzą i odchodzą podczas rozwoju. 2. Zmiana specyfikacji podczas opracowywania. 3. Dodano liczne dodane funkcjonalności (w krótkim czasie). Klient chce wielu nowych funkcjonalności, a to w zasadzie sprowadza się do pracy nad tym projektem **tygodniowo** przez ponad 10 godzin. Ze względu na dług techniczny spędzamy **DUŻO** godzin na naprawie lub badaniu problemów, które zwykle mają swoje źródło w jednym z poniższych: 1. Bezwstydny, głupi błąd, który sprawia, że ludzie płaczą. 2. Nowa funkcja powoduje powyższe, ponieważ nie przewidzieliśmy wszystkich miejsc, w których nowa funkcja będzie miała wpływ. 3. Kilka innych problemów, z którymi się borykaliśmy (np. migracja serwerów, aktualizacje) Mamy problemy **codziennie** i staraliśmy się to powstrzymać: 1. Utworzono dokumentację techniczną dotyczącą importu, płatności i ogólnego działania strony internetowej. 2. Zorganizuj spotkanie na początku tygodnia – przedyskutuj bieżące problemy lub ulepszenia oraz sposoby ich rozwiązywania. 3. Miej plan testów. Programista A test B, B testy C i C testy A. Następnie nasz Project Manager dorzuci kilka testów. Jeśli chodzi o wpływ funkcji, rzucamy ją na środowisko pomostowe i pozwalamy klientowi sprawdzić sam. Problem polega na tym, że problemy wciąż się zdarzają... i jakoś nie możemy tego ogarnąć. Nowe funkcje wciąż powodują błędy, a stare błędy wciąż witają. Jakoś - być może ze względu na rozmiar projektu - nie możemy ogarnąć tego projektu. Zakładam, że wielu programistów pracuje nad większymi projektami niż ten. Dlatego dochodzę do mojego pytania: co możemy zrobić lub co zrobić **ty**, aby uniknąć tych problemów przy dużych projektach? Drobna zmiana, dodatkowe informacje: 1. Używamy kontroli wersji (SVN). 2. Mamy proces rozwoju DTAP.


title: Jakie jest znaczenie MODULE_LICENSE_BSD_LIKE w kodzie źródłowym Androida?

text: W kodzie źródłowym Androida widzimy pliki takie jak MODULE_LICENSE_APACHE2, MODULE_LICENSE_BSD_LIKE, MODULE_LICENSE_W3C. Zewnętrzny obserwator mógłby pomyśleć, że określają one zamierzoną licencję, która ma zastosowanie do drzewa kodu źródłowego, w którym znajduje się ten plik. Weźmy na przykład moduł JSON. Zawiera pusty plik MODULE_LICENSE_BSD_LIKE, co może wskazywać, że moduł JSON jest objęty jedną z licencji BSD. Jednak same źródła mówią, że są one licencjonowane w ramach Apache License 2.0, jak widać w JSON.java. Osoby zajmujące się pakowaniem tej biblioteki dla Fedory, a także innych systemów operacyjnych, takich jak Debian, uważają, że biblioteka jest licencjonowana jako Apache License 2.0. Wydaje się to rozsądne, ponieważ puste akta nie mają żadnej wagi prawnej. Jednak MODULE_LICENSE_BSD_LIKE najwyraźniej istnieje w jakimś celu. Jaki jest ten cel?


title: Zachowania testowania jednostkowego bez sprzężenia ze szczegółami implementacji

text: W swoim przemówieniu TDD, gdzie wszystko poszło nie tak, Ian Cooper promuje pierwotną intencję Kent Beck dotyczącą testowania jednostkowego w TDD (testowanie zachowań, a nie konkretnie metod klas) i argumentuje za unikaniem łączenia testów z implementacją. W przypadku zachowania typu `zapisz X w jakimś źródle danych` w systemie z typowym zestawem usług i repozytoriów, jak możemy przeprowadzić test jednostkowy zapisywania niektórych danych na poziomie usługi, poprzez repozytorium, bez łączenia testu z szczegóły implementacji (np. wywołanie określonej metody)? Czy unikanie tego rodzaju sprzężenia nie jest w jakiś sposób warte wysiłku/złego?


title: Projekt Forking GPL: Czy mam pełne prawa do nowego rozwidlenia, czy nadal mam zależności od pierwotnego właściciela (właścicieli)

text: Zastanawiam się nad stworzeniem rozwidlenia do małego projektu na licencji GPLv2 i mam kilka bardzo konkretnych pytań, na które nie udało mi się odpowiedzieć w moich badaniach na różnych stronach i forach. Kiedy rozwidlam kod, jestem zmuszony wydać nowy projekt na tej samej licencji (GPL), co zrobię, ale czy mogę również zdecydować się wydać go na podwójnej licencji, jednej z nich komercyjnej? Czy podczas rozwidlenia projektu automatycznie posiadam prawa autorskie do całości? Ma to znaczenie na przykład przy podejmowaniu decyzji o przyszłej zmianie licencji lub możliwości wyegzekwowania licencji GPL wobec strony trzeciej. Dzięki!


title: Luźne sprzężenie w projektowaniu zorientowanym obiektowo

text: Próbuję nauczyć się GRASP i znalazłem to wyjaśnione (tutaj na stronie 3) o Low Coupling i byłem bardzo zaskoczony, kiedy to znalazłem: > Rozważ metodę `addTrack` dla klasy `Album`, dwie możliwe metody > to: > > `addTrack( Ścieżka t )` > > i > > `addTrack( int nie, Tytuł ciągu, podwójny czas trwania )` > > Która metoda redukuje sprzężenie? Drugi ma, ponieważ klasa używająca > klasy Album nie musi znać klasy Track. Ogólnie parametry > do metod powinny używać typów bazowych (int, char...) i klas z pakietów java.* >. Zwykle się z tym nie zgadzam; Uważam, że `addTrack(Track t)` jest lepszy niż `addTrack(int no, String title, double duration)` z różnych powodów: Czysty kod brak lub najlepiej jeden, 2 w niektórych przypadkach i 3 w szczególnych przypadkach, więcej niż 3 wymaga refaktoryzacji - są to oczywiście zalecenia, a nie święte zasady). 2. Jeśli `addTrack` jest metodą interfejsu, a wymagania wymagają, aby `Track` zawierał więcej informacji (np. rok lub gatunek), to interfejs musi zostać zmieniony i aby metoda obsługiwała inny parametr. 3. Enkapsulacja jest zepsuta; jeśli `addTrack` jest w interfejsie, to nie powinien znać wewnętrznych części `Track`. 4. W rzeczywistości jest bardziej połączona w drugą stronę, z wieloma parametrami. Załóżmy, że parametr `no` musi zostać zmieniony z `int` na `long`, ponieważ jest więcej niż `MAX_INT` ścieżek (lub z jakiegokolwiek powodu); wtedy zarówno Ścieżka, jak i metoda muszą zostać zmienione, natomiast jeśli metodą będzie addTrack(Ścieżka) zmieniona zostanie tylko Ścieżka. Wszystkie 4 argumenty są ze sobą powiązane, a niektóre z nich są konsekwencjami innych. Które podejście jest lepsze?


title: Czy używanie dirname(__FILE__) to dobra praktyka?

text: Patrząc na kod Joomla widzę, że w pierwszym wierszu indeksu definiuje on podstawową ścieżkę instalacji za pomocą `dirname(__FILE__)`. Czy jest to możliwe ryzyko dla witryny? Jeśli niekontrolowany komunikat o błędzie pokazuje wewnętrzną ścieżkę katalogu Joomla, na przykład z powodu nieudanego dołączenia, czy można go użyć do wykonania jakiegoś ataku na witrynę? Jeśli tak, czy wygodnie jest korzystać z tej funkcji?


title: Jak najlepiej zaimplementować obsługę HTML5 w mojej bibliotece walidacji

text: Stworzyłem bibliotekę walidacji opartą na adnotacjach o nazwie regula. Wygląda na to, że framework cieszy się dużym zainteresowaniem, a następną rzeczą, którą chciałbym zrobić, jest wsparcie walidacji HTML5. Pierwotnie pomyślałem, że sprawdzę, czy przeglądarka obsługuje podaną walidację HTML5 i emuluje lub deleguje wbudowane odpowiedniki regula. Jest to trywialne dla rzeczy takich jak `required`, ale kiedy zaczniesz wchodzić w walidację daty, staje się to trudne (widżety daty, lokalizacja itp.). Mam więc przed sobą kilka opcji: * Pełna podkładka HTML5 wraz z widżetami (dla rzeczy związanych z randkami itp.): Czuję, że to przesada i zasadniczo wymyślanie koła na nowo, ponieważ jest to już objęte takimi rzeczami jak modernizr. * Użyj walidacji HTML5, jeśli jest dostępna (natywna lub dostarczona przez podkładkę; w przeciwnym razie zignoruj): Oznacza to, że jeśli walidacja HTML5 jest dostępna (natywnie lub przez podkładkę), użyję jej, w przeciwnym razie zignoruję. Skłaniam się ku temu drugiemu, ponieważ obecnie, jeśli ktoś chce korzystać z walidacji HTML5, najprawdopodobniej będzie wymagał podkładki, ponieważ nie wszystkie przeglądarki obsługują HTML5. Która opcja jest Twoim zdaniem lepsza?


title: Jak zaimplementować dopasowanie ciągów na podstawie wzorca

text: Poproszono mnie o zbudowanie narzędzia, które może określić, czy ciąg pasuje do wzorca. Przykład: > {1:20} rzeczy t(x) {a,b,c} pasowałyby: * `1 rzeczy tx a` * `20 rzeczy t c` Jest to rodzaj wyrażenia regularnego, ale z inną składnią * Nawiasy wskazują opcjonalna wartość * {1:20} to przedział; Będę musiał sprawdzić, czy token jest liczbą i czy jest pomiędzy 1 a 20 * {a,b,c} to tylko wyliczenie; może to być a, b lub c W tej chwili zaimplementowałem to za pomocą wyrażenia regularnego, a interwał był trudny do zrobienia. W swoim czasie próbowałem ręcznie zaimplementować jakiś matcher, ale okazuje się, że nie jest to takie proste. Eksperymentując, uzyskałem funkcję, która generuje tablicę stanów na podstawie wzorca i maszyny stanów. Działało dobrze, dopóki nie próbowałem zaimplementować wartości opcjonalnej i utknąłem i jak wygenerować tabelę stanów. Potem szukałem, jak mógłbym to zrobić, i to doprowadziło mnie do takich rzeczy jak parser LL, parser LALR, parser zejść rekurencyjnych, gramatyki bezkontekstowe itp. Nigdy tego nie studiowałem, więc trudno jest wiedzieć, co jest tutaj istotne , ale myślę, że to jest to, czego potrzebuję: * Gramatyka * Parser, który generuje stany na podstawie gramatyki i wzorca * Maszyna stanów, aby sprawdzić, czy łańcuch pasuje do stanów. Moje pierwsze pytanie brzmi: czy to prawda? I drugie pytanie, co polecasz, abym przeczytał/przestudiował, aby móc to zaimplementować?


title: Czy poprawne jest dodawanie wartości logicznych w celu policzenia liczby prawdziwych wartości w wektorze?

text: Czy koncepcyjnie poprawne jest sumowanie wektora wartości logicznych? Z matematycznego punktu widzenia twierdzę, że nie jest to: „Prawda + Prawda != 2”. Ale nadal jest to całkiem praktyczne! Przykład użycia zwektoryzowanej biblioteki `Pythona` `numpy`: In [1]: X = rand(10) In [2]: large = X>0.6 In [3]: large.dtype Out[3]: dtype('bool ') In [4]: large.sum() Out[4]: 7 Nie podoba mi się to, ale jest bardzo praktyczne. Czy to dobra praktyka? **Aktualizacja** : celem jest zliczenie liczby prawdziwych wartości w wektorze.\ **Aktualizacja 18.02.2013** : Właśnie odkryłem, że funkcja numpy `count_nonzero` robi _dokładnie_ to, czego potrzebuję we właściwy sposób . Oznacza to, że w przypadku `Pythona` nie ma potrzeby używania "brudnej" drogi.


title: Wolne maszyny deweloperskie - dobre podejście do vmware?

text: używamy powolnych notebooków dla programistów. Są wyposażone w barany Vista i 2 GB, które spowalniają wszystko. Ktoś zdecydował, że dobrym rozwiązaniem byłoby użycie klientów vmware zamiast szybszego sprzętu komputerowego. Klienci VMWare mogliby działać na dwurdzeniowych procesorach xeon. Co o tym sądzisz i jakie prawdopodobnie wynikną z tego cofnięcia?


title: Jak wykorzystałbyś Redis do obsługi wyjątków?

text: Czytałem ten zapis wywiadu z deweloperem GitHub i opisywał, w jaki sposób używają Redis: > P: Wspomniałeś o korzystaniu z Redis. Jak tego używasz? > O: **Używamy Redisa do obsługi wyjątków** i do naszej kolejki. Wypróbowaliśmy > wiele mechanizmów kolejkowania opartych na Ruby. Chris napisał abstrakcję do mechanizmu kolejkowania >. Używaliśmy BJ i DJ, a we wczesnych dniach wypróbowaliśmy Amazon SQS i wiele mechanizmów kolejkowania i wszystkie przewróciły się w takim czy innym momencie z natężeniem ruchu, który wykonywaliśmy na nich i rodzaje zapytań, które staraliśmy się od nich uzyskać. > W końcu przenieśliśmy się do przestrzeni Redis, którą napisał również Chris, zwanej Resque. Czy ktoś może zgadnąć, co to znaczy używać Redis do obsługi wyjątków? Czy to oznacza rejestrowanie wyjątków czy coś innego? Możesz zobaczyć film, w którym mówi to tutaj.


title: Jaka monada jest przeciwieństwem monady błędu w haskell

text: W monadzie błędów pierwsze niepowodzenie zatrzymuje wykonanie, które przeniesie błąd przez kolejne wiązania. Jaka monada zatrzymuje się na sukcesie, przenosząc tylko sukcesy, a w zasadzie połykając wszelkie błędy i próbując następnego związania, nie zważając na niepowodzenie poprzedniego? Monada błędu może być używana do traktowania porażki jako sukcesu, ale jestem ciekawy, czy domyślne biblioteki mają monadę do tego konkretnego celu, prawie jak monada Or w moim umyśle „Zrób to lub tamto” Edycja: Zachowanie be: Lewy "niepowodzenie" >>= (\x -> Prawy "wygra") >>= (\x -> Lewy "ahh neener") >>= (\x -> Prawy (x + " tak")) W monadzie błędu pierwsza lewa wartość jest po prostu przenoszona do przodu, więc wynikiem tego jest `Left "fail"`. Zachowanie, którego chcę, to sytuacja, w której powyższe zwraca `Właściwe „wygraj tak”` to banalna monada do wdrożenia, którą mógłbym napisać sam, ale doszedłem do wniosku, że coś istnieje, aby to zrobić (może nie używając Anither, ale to pierwsza rzecz, która przychodzi mi do głowy dla takie zachowanie).


title: Jakie są zewnętrzne zależności pliku wykonywalnego Pythona?

text: Wydaje mi się, że istnieje narzędzie o nazwie Py2Exe do konwersji aplikacji Pythona na plik wykonywalny. Ponieważ używam również PyQt4 dla aplikacji GUI., jakie są zewnętrzne zależności dla takiego pliku wykonywalnego? Jakiego typu pliki muszę zapakować wraz z konfiguracją? Czy jest jakieś narzędzie Python Setup Builder?


title: Czego GWT nie zapewnia, że daje proste kodowanie AJAX?

text: Dla doświadczonego programisty Java bez AJAX i bardzo małego doświadczenia w Javascript, GWT jest atrakcyjny. Ale czego będzie mi brakować, jeśli po prostu użyję GWT?


title: Jak radzić sobie z przepełnieniem listy TODO?

text: Poważnie... Potrzebuję więcej czasu i nie mogę go znaleźć. Mam swój **główny projekt** i poświęciłem mu większość czasu. Próbuję, ALE mam **dużo** drobnych projektów, wsparcie dla starych projektów. **Bardzo interesuje mnie** samodoskonalenie, ponieważ wciąż jestem młodym programistą i spędzam dużo czasu na odkrywaniu nowych technologii. Poza tym należę do niektórych zespołów zajmujących się dystrybucją Linuksa (w końcu jestem nowicjuszem w Linuksie) i też poświęcam na to czas (moim głównym projektem jest jednak tylko wygrana). Polepszam się we wszystkich kierunkach. Ale powoli, bo robię wszystko w tym samym czasie... Wiele razy czuję się tak: ![tutaj podaj opis obrazka](http://i.stack.imgur.com/KrhC6.gif) A ja nie chcę zostawiać rzeczy, którymi jestem zainteresowany, po prostu potrzebuję więcej czasu... Ale nie ma więcej czasu. Mam też swoje życie prywatne, praca w domu i praca w pracy nie jest taka łatwa. Życie w pracy również nie jest rozwiązaniem. Więc w końcu szukam sposobu na zoptymalizowanie (twarda optymalizacja) mojej listy TODO, ponieważ czas nie jest rzeczą, którą można zwiększyć.


title: Co to jest kod ujemny?

text: Czytałem artykuł na Wikipedii na temat Douglasa McIlroya i znalazłem cytat, który mówi: „Prawdziwym bohaterem programowania jest ten, kto pisze negatywny kod”. Co to znaczy?


title: Jak sobie poradzę w tej sytuacji zawodowej?

text: Jestem świeżo upieczonym absolwentem college'u. Niedawno przeprowadziłem rozmowę kwalifikacyjną na stanowisko programisty. Bardzo lubię środowisko. Dostałem oferty z innych miejsc, ale to miejsce po prostu jest dla mnie bardzo wygodne, znam frameworki, z których korzystają. Niedawno rekruter powiedział mi, że zespół może pomyśleć, że jestem trochę za słaby. Chcą teraz kogoś z 1-2 letnim doświadczeniem. Przeprowadzają wywiady z innymi z tym doświadczeniem. Ale naprawdę chcę tej pracy. Wysłałem e-mail do rekrutera, że jestem gotów zrobić wszystko, aby dostać tę pracę. Nie mam nic przeciwko spędzaniu dodatkowego czasu na przyspieszeniu tempa nauki. Bardzo lubię to środowisko i tę pozycję. Ale myślę, że jest poza miastem. Czy to w porządku, napisz do kierownika i powiedz mu, jak się czuję. Zrobię wszystko, aby to zadziałało. Tzn. weź kilka tysięcy mniej lub spędź dodatkowy czas. Tak jak powiedziałem, dostałem oferty z innych miejsc, ale to miejsce wydaje mi się odpowiednie i wygodne. Dostali wszystko, czego potrzebuję.


title: TFS — Wyjaśnienie różnicy między elementem Backlogu produktu a zadaniem

text: Kilka razy spotkałem się z tym wyzwaniem i mam nadzieję, że ktoś może dostarczyć referencji, szkoleń lub porad, jak wyjaśnić różnicę między elementem Backlogu produktu a zadaniem w TFS. Rozumiem i wyjaśniłem, że Element Backlogu Produktu to „Co”, a Zadaniem jest „Jak”. Wyjaśniłem również, że PBI jest wymogiem, a Zadanie to sposób spełnienia tego wymogu. Kiedy to wyjaśniam, wielokrotnie spotykam się z pustymi spojrzeniami i drapaniem w głowę. Wygląda na to, że inżynierowie oprogramowania, którym to wyjaśniam, nie mogą dokonać rozróżnienia. Dla nich wszystko jedno. Myślę, że moim drugim wyzwaniem jest to, że nie jestem w stanie skutecznie zilustrować, dlaczego ważne jest dokonanie rozróżnienia.


title: Jak podejść do projektu, aby zminimalizować konflikty podczas dystrybucji poszczególnych lokalizacji do sprzedawców

text: Jeden z moich potencjalnych klientów prowadzi w swoim mieście otwarty rynek. Z tego, co mi powiedziano, osiągają przyzwoity zysk, wynajmując poszczególne lokalizacje na tym rynku drobnym kupcom, którzy przychodzą tam codziennie, aby sprzedawać produkty i inne towary, które zwykle można znaleźć w takich miejscach. Każdy kupiec musi zapłacić określoną kwotę z góry, aby otrzymać sezonowy kontrakt, który daje mu prawo do sprzedaży swoich towarów na rynku w danym sezonie. Umowa nie precyzuje jednak, w której mikrolokalizacji handlowiec będzie stacjonował, a właściwie w jakich dniach będzie przebywał. Jedyne, co daje im umowa, to prawo do sprzedaży określonych rodzajów towarów i pory roku. Za każdy dzień, w którym faktycznie są obecni na rynku, kasjer przychodzi do ich miejsca i pobiera dzienny czynsz za to miejsce. Obecnie niektóre mikrolokalizacje mają większy ruch niż inne, więc z pewnością będzie pewna konkurencja. Co normalnie jest dobre. Uznani kupcy chcą zachować swoje miejsce, aby ich lojalni klienci mogli je znaleźć. Problem polega na tym, że istniejący „mechanizm” rezerwacji jest w zasadzie „kto pierwszy, ten lepszy”. W rzeczywistości oznacza to, że około godziny 02:00 kupcy zaczynają pojawiać się i umieszczać wszystkie swoje rzeczy w swoich słodkich miejscach, aby uniemożliwić innym robienie tego samego. Czasami konkurencja może być całkiem dosłowna. W przeszłości kilka razy doszło do fizycznej kłótni, więc teraz przed najbardziej ruchliwymi dniami sezonu wymagane jest, aby nadzorca był obecny w nocy. Klient poprosił mnie o opracowanie rozwiązania tego problemu opartego na oprogramowaniu. Pomysł na aplikację webową i/lub mobilną został porzucony, ale niezależnie od formy, musiałaby ona obsługiwać następujące funkcje: * uwierzytelnianie akceptanta, * wybór preferowanej mikrolokalizacji na następny dzień, * przedpłata w wysokości dzienny czynsz za pośrednictwem jakiejś metody online. Kiedy czytałem wymagania, natychmiast wyskoczyła mi jedna rzecz: **Nie mogę tego zrobić w formie aplikacji**! Oto, co myślę, że to się stanie, jeśli i tak to zrobię: W pierwszych dniach i tygodniach sprzedawcy, którzy wiedzą o aplikacji i korzystają z niej, będą mieli nieuczciwą przewagę nad sprzedawcami, którzy tego nie robią. Łatwo byłoby założyć, że problem sam się naprawi wystarczająco szybko, ale byłoby to błędne założenie, IMHO. Wielu drobnych kupców to w rzeczywistości starsi ludzie, którzy nie potrafią posługiwać się komputerem. Wyobraź sobie na przykład miłą staruszkę sprzedającą kwiaty. Nigdy nie użyje aplikacji, bo to dla niej technologia kosmiczna. Ale ona nadal będzie pojawiać się o godzinie 02:00 iz radością położy kwiaty w tym samym miejscu, co poprzedniego dnia. Tylko po to, by 4 godziny później dowiedzieć się, że _ktoś inny_ już wczoraj zarezerwował i zapłacił za to miejsce, ze swojego domu, za pomocą komputera! Jak ma z tym konkurować? Ale to się nie kończy... Załóżmy, że w jakiś sposób uczy się korzystać z aplikacji (lub robi to za nią ktoś inny, co jest bardziej prawdopodobne). Teraz wszyscy korzystają z aplikacji, aby zarezerwować swoje miejsce. Kilka tygodni do przodu i oto, co otrzymujemy: Joe S. Merchant loguje się do aplikacji o 17:10, 10 minut po otwarciu rezerwacji na następny dzień. Ku jego zaskoczeniu prawie wszystkie miejsca zostały już zajęte, w tym jego zwykłe. Teraz może albo mieć nadzieję, że ktoś się nie pojawi, żeby zająć ich miejsce w ostatniej chwili, albo zaakceptować, że spóźnił się i stracił cały dzień roboczy z powodu tej przeklętej rzeczy z komputerem! Oczywiście wyjaśniłem swoje zdanie klientowi... I zgadzają się, że to problem. Nie chcieliby pogorszyć złej sytuacji tylko po to, by mieć wygodniejszy sposób pobierania czynszu dziennego. Oboje wierzymy, że obecny system mógłby zostać ulepszony. Podstawą obecnego systemu jest konkurencja i prawdopodobnie zostanie. Problem w tym, że obecnie konkurencja opiera się bezpośrednio na wysiłku fizycznym (czyli jak wcześnie osoba chce się obudzić i udać się na targowisko, aby dostać się na miejsce). Ten wysiłek jest z kolei naturalnym czynnikiem ograniczającym (nie)uczciwość całej konkurencji. Wprowadzając **ANY** substytut oprogramowania, ten kluczowy czynnik skutecznie zniknął! Zmniejsza to problem, kto jest szybszy w pierwszych minutach po rozpoczęciu rezerwacji. Nie ma już żadnego wysiłku, który automatycznie wydaje się niesprawiedliwy! Więc czujemy, że trzeba jakoś dostosować zasady. Porzuciliśmy kilka pomysłów, które mogłyby sprawić, że konkurencja online byłaby bardziej uczciwa. Pomysły takie jak: **1\. Budowanie systemu opartego na reputacji** Ten wprowadza dużo dodatkowej złożoności, nie wspominając o odpowiedzialności za śledzenie i ocenę różnych czynników wpływających na wynik reputacji. Większości z nich nie można zautomatyzować, co oznacza, że wiązałyby się z dodatkowymi kosztami dla klienta. **2\. Losowy początek każdego dnia okna rezerwacji** Ten może potencjalnie zmniejszyć presję konkurencji w pierwszych minutach okna rezerwacji, nadając mu _wygląda na to, że jest bardziej sprawiedliwy. Obawiam się jednak, że tylko zdenerwuje kupców. Zarówno ja, jak i mój klient zgadzamy się, że absolutnie **NIE MOŻEMY** wdrożyć mechanizmu rezerwacji opartego na licytacji. Byłoby to złamaniem prawa finansowego, którego firma klienta musi przestrzegać, domagając się w takiej sytuacji stałego czynszu. Nie wierzę, że najlepszym rozwiązaniem jest to, które obecnie istnieje, nawet jeśli kupcy są przyzwyczajeni do tego, że przychodzą o 02:00 i czekają 4 godziny, aż rynek faktycznie się otworzy. **Zwracam się do tej społeczności z pytaniem: Jak mogę poważnie ulepszyć obecny system z komponentem oprogramowania? Jakich opcji mi brakuje?**


title: Dlaczego NIE należy otwierać kodu non-profit?

text: Jestem wielkim fanem otwartego kodu źródłowego. Myślę, że rozumiem większość zalet przejścia na open source. Jestem badaczem nauk ścisłych i muszę pracować z dość zaskakującą ilością oprogramowania i kodu, który nie jest open source (albo jest zastrzeżony, albo nie jest publiczny). Naprawdę nie widzę dobrego powodu i widzę, że kod i ludzie, którzy go używają, z pewnością skorzystaliby na upublicznieniu (jeśli nic innego, w nauce ważne jest, aby wyniki można było w razie potrzeby powtórzyć, a to jest znacznie trudniejsze, jeśli inni nie mają dostępu do twojego kodu). Zanim wyjdę i zacznę nawracać, chcę wiedzieć: **czy są jakieś dobre argumenty za _nie_ publikowaniem kodu non-profit publicznie i z licencją zgodną z OSI?** _(Zdaję sobie sprawę, że jest kilka podobnych pytań na SE, ale większość skupia się na sytuacjach, w których kod jest używany głównie do zarabiania pieniędzy, a odpowiedzi nie mogłem znaleźć zbyt wiele. motywy zysku, takie jak rozpoznawalność marki firmy macierzystej i oczekiwania inwestorów w zakresie zysku. Innymi słowy, pytanie dotyczy tylko oprogramowania, dla którego NIE ma motywu zysku związanego z oprogramowaniem w ogóle.


title: Otwarte oprogramowanie czy nie do otwartego oprogramowania, oto jest pytanie

text: Mam więc kilka projektów, nad którymi pracowałem i próbuję zdecydować, czy chcę je otworzyć, czy udostępnić za darmo jako zamknięte źródło. Nigdy wcześniej nie „byłem właścicielem” projektu open source i chciałbym usłyszeć opinie na temat zalet i wad obu opcji. Wszelkie przerażające historie o decydowaniu o którymkolwiek podejściu są również dopuszczalne.


title: Kto jest właścicielem kodu, kto jest właścicielem algorytmu, kto jest właścicielem pomysłu?

text: To pytanie skłoniło mnie do zastanowienia się, jakie produkty pracy programistycznej należą do pracodawcy, a jakie nie. Dwie skrajności to (0) kod – najwyraźniej należy on do pracodawcy oraz (1) wyuczone umiejętności osobiste i techniczne. Ale co jest pomiędzy? Kto jest właścicielem pseudokodu/algorytmu? Kto jest właścicielem ogólnej idei algorytmu? Kto posiada wiedzę, że taki algorytm może służyć jakimś użytecznym celom (np. na tej stronie pytania są wartościami, a także odpowiedziami)? Także: Kto jest właścicielem pomysłu w sieci?


title: Jak ćwiczyć pisanie klawiszy programisty, takich jak tylda, rura i cytat programisty?

text: Fajnie, że istnieją usługi takie jak TypeRacer, w których można ćwiczyć zwykłe pisanie, ale ja chcę ćwiczyć klawisze programistyczne, obejmuje więcej cyfr i klawiszy, których nie używa zwykła maszynistka. Był jakiś korepetytor, z którym ćwiczyłem kilka klawiszy programisty i zauważyłem, że moja prędkość drastycznie spadła z 70-80 wpm do nawet około 15-30 wpm, trenuję też różne mięśnie. Jak więc mogę ćwiczyć tylko programowanie klawiszy z tekstami programowania lub po prostu losowymi fragmentami kodu?


title: Jak powiedzieć przypadki, kiedy warto korzystać z LINQ?

text: Wiele rzeczy w LINQ można wykonać bez biblioteki. Ale w niektórych scenariuszach LINQ jest najbardziej odpowiedni. Przykładami są: 1. `SELECT` \- http://stackoverflow.com/questions/11883262/wrapping-list-items-inside-div-in-a-repeater 2. `SelectMany`, `Contains` \- http: //stackoverflow.com/questions/11778979/better-code-pattern-for-checking-existence-of-value 3. `Enumerable.Range` \- http://stackoverflow.com/questions/11780128/scalable-c- sharp-code-for-creating-array-from-config-file 4. `GDZIE` http://stackoverflow.com/questions/13171850/trim-string-if-a-string-ends-with-a-specific- word Jakie czynniki należy wziąć pod uwagę przy podejmowaniu decyzji między LINQ a zwykłymi elementami języka .Net?


title: Przechowywanie wartości a wywoływanie referencji do wielokrotnego użytku w Javie

text: Mam stary zwyczaj unikania wielokrotnego wywoływania referencji, zarówno dla łatwiejszego czytania/utrzymywania kodu, jak i dla możliwej wydajności. Ale zastanawiam się, co jest bardziej wydajne (pamięć, wydajność, jedno i drugie?). Na przykład podczas pracy z XML przy użyciu parsera VTD if( vn.toString( vn.getCurrentIndex() ).equalsIgnoreCase( "broken-label" ) == false ) { do { if( parentNode != null ) { currentNode = parentNode. addChildNode( vn.toString( vn.getCurrentIndex() ) ); } else { currentNode = new xmlNode( vn.toString(vn.getCurrentIndex()), null ); treeNodes.add( 0, bieżący węzeł ); } Nie przechowuje wartości, być może oszczędzając trochę kosztów związanych z utworzeniem miejsca na zapisanie zmiennej lokalnej, a także zmniejszając obciążenie garbage collectora (zakładając, że ta sekcja kodu jest powtarzana tysiące razy w krótkim odstępie czasu. Mój zwyczaj czystszego/wydajnego kodu byłoby zastąpienie powyższego prostą zmianą String label = vn.toString( vn.getCurrentIndex(); if( label ).equalsIgnoreCase( "vsled-image" ) == false ) { do { if( parentNode != null ) { currentNode = parentNode.addChildNode( label ) ); } else { currentNode = new xmlNode( label, null ); treeNodes.add( 0, bieżący węzeł ); } Chociaż jest to oczywiście łatwiejsze do odczytania i utrzymania. Czy są jakieś korzyści pozaludzkie?


title: Najlepszy sposób na udostępnienie (udostępnienie) światu przydatnego samodzielnie napisanego skryptu/programu?

text: Przez całe życie zgromadziłem sporo skryptów, które w wielu przypadkach okazały się przydatne dla mnie i mogą być przydatne dla wielu innych. Patrzę na rzeczy takie jak todo.txt (który prawdopodobnie zaczął się jako czyjś osobisty menedżer plików tekstowych), a nawet prostsze w Internecie i czasami mam ochotę udostępnić swoje rzeczy ludziom, którzy tego szukają, aby móc wykorzystanie, open source. Jaki jest najlepszy sposób, aby po prostu umieścić rzeczy tam, gdzie ludzie, którzy mogą chcieć je znaleźć, mogliby je znaleźć? Czy powinienem założyć dobrze czytanego bloga? pisać na forach? Nie chcę tego reklamować ani spamować, po prostu miej to w taki sposób, aby każdy, kto szukał czegoś o podobnej funkcjonalności, znalazłby to przez google lub coś takiego.


title: Jakieś wskazówki dotyczące rozwiązywania niezwykle złożonych problemów, takich jak problem z Wieżą Hanoi?

text: Ludzie często dają mi wskazówkę „dziel i rządź”, ale myślę, że w przypadku niektórych problemów to nie wystarczy. Problem z tak złożonym problemem, jak problem z Wieżą Hanoi, polega na tym, że nie można nawet symulować ani wyabstrahować części problemów, nawet jeśli podzieli się je na części, jeśli wiesz, co mam na myśli. Czy zatem ktoś może mi podać krok po kroku podejście do rozwiązania tak złożonego i trudnego problemu?


title: Dlaczego javascript, będąc językiem opartym na prototypach, nie ma łatwego dostępu do prototypu?

text: Może to głupie pytanie, ale jestem trochę zaintrygowany. Będąc JavaScript językiem opartym na prototypach, z jego pseudo-klasowymi konstruktorami funkcji trochę upieczonymi (pamiętaj JavaScript: The Good Parts ...) Zastanawiam się, jak to możliwe, że od samego początku nie miał łatwego sposobu aby uzyskać dostęp do prototypu każdego obiektu. Mówiąc prościej mam na myśli coś w rodzaju object.prototype lub object._prototype (a nie brudnego proto) Z tego, co wiem, Object.getPrototypeOf(obj) został właśnie dodany pod koniec 2008 roku, prawie 13 lat po uruchomieniu JavaScript. Pytam o to, ponieważ zawsze zastanawiałem się, czy JavaScript kiedykolwiek miał być używany jako czysty język oparty na prototypach, to znaczy bez użycia żadnej funkcji do konstruowania obiektów (innymi słowy, nigdy nie używając operatora new).


title: Budujesz witrynę w znanym języku czy w nowym?

text: Więc jest strona internetowa, którą chcę zbudować. Będzie to agregator recenzji i prawdopodobnie nieco więcej. Chcę zbudować tę witrynę z trzech powodów: 1. Naprawdę uważam, że ta witryna będzie używana przez rozsądną liczbę osób 2. Chcę poćwiczyć swoje umiejętności programistyczne, ponieważ obecnie w mojej pracy zajmuję się głównie skryptami 3. Może nauczyć się nowy język. Obecnie jestem rozdarty, ponieważ moją natychmiastową reakcją jest to, że chcę korzystać z Javy, ponieważ znam ją stosunkowo dobrze, lubię ją i czuję, że pozwoli mi to na umieszczenie czegoś tak szybko, jak to możliwe. Chciałbym również użyć istniejącego Web Application Framework. Jeśli nie skończę z Javą, prawdopodobnie wybrałbym jeden z następujących: * C#/.NET - wolę języki statyczne, a to jest podobne do Javy. * Python - używam tego w mojej pracy powierzchownie i wygląda na to, że używa go wiele osób. * Ruby - Wydaje się, że ma bardzo dobrze ugruntowany framework * Scala - Ma pewne podobieństwa do Javy, ale z tego, co czytam, to inny paradygmat Więc myślę, że moje pytanie brzmi w tych okolicznościach, czy uważasz, że powinienem zbudować stronę internetową w znanym języku czy nowy?


title: Co mogę zrobić, aby zapobiec podjęciu nieetycznego projektu deweloperskiego?

text: Kiedy byłem samozatrudniony, podjąłem się kiedyś małego i raczej dobrze płatnego projektu: „System biuletynów”, mówi specyfikacja. Wszystko było w porządku, faktury były opłacane z każdym osiągniętym kamieniem milowym, byłem szczęśliwym programistą… Dopóki Pan Klient nie zaczął domagać się fałszowania nagłówków poczty i mnóstwa innych funkcji, które ostatecznie doprowadziły mnie do wniosku, że buduję dość wyrafinowaną pocztę spamową. Krótko mówiąc: względy finansowe sprawiły, że skończyłem to, co zacząłem. Do dziś mam żal, że podjąłem tę pracę – gdybym zadał sobie trud wyszukania w Google imienia i nazwiska mojego klienta, zostałbym ostrzeżony. Jakich strategii mogę użyć, aby uniknąć kodowania rzeczy, których wolałbym nie widzieć w czyichś rękach?