title: Nazwa do użycia metod, które zwracają, a nie ustawiają

text: Istnieje ogólna zasada OOP, że metody powinny zwracać zmienne lokalne, a nie ustawiać pola obiektów. Na przykład, powiedzmy, że mam następujący fragment kodu (przykład w Javie): public class Number { public int myNum; } public class Straszne { public static void areYouSerious(Number num){ num.myNum = 47; } } public class Test { public int num = new Number(); public void doHorribleThings(){ Horrible.areYouSerious(num); } public static void main(String[] args){ Test test = new Test(); test.doHorribleThings(); } } Oczywiście ten styl programowania może bardzo szybko ulec zmianie i staje się ogromnym bólem głowy dla każdego, kto próbuje go utrzymać. Bardziej poprawnym sposobem wykonania tego byłoby następujące: public class Number { public int myNum; } public class NotAsBad { public static int getDefaultVal(){ return 47; } } public class Test { public int num = new Number(); public void doHorribleThings(){ num.myNum = NotAsBad.getDefaultVal(); } public static void main(String[] args){ Test test = new Test(); test.doHorribleThings(); } } Pierwszy przykład to modyfikowanie przekazanego w referencji, podczas gdy drugi to uogólnienie funkcji ustawienia statycznego, dzięki czemu zwraca ona wartość, która może być użyta do ustawienia pola obiektu. **Czy istnieje nazwa zasady, że druga metoda powinna być preferowana nad pierwszą? Rodzaj zasady „modułowości”?** Tak jak „enkapsulacja” jest terminem ograniczającym manipulację zmiennymi, chciałbym termin na ograniczenie zakresu efektów jakiejś funkcjonalności. Jeśli nie ma istniejącego terminu, będę go nazywał _lokalizacja konsekwencji_.


title: Jak zbudować wysoce skalowalną usługę użytkownika/profilu?

text: Pytanie -- Obecnie mam dużą monolityczną aplikację Java, którą pracuję nad rozbiciem na składniki usług. Jednym z elementów, które chcę wyodrębnić, jest usługa obsługująca i prezentująca użytkowników i profile. Obecnie podstawowa usługa korzysta z backendu MySQL i jest napisana w Javie i jest hostowana tylko na jednym zestawie serwerów (web, aplikacja, db). Moim głównym celem jest sprawienie, aby usługa użytkownika/profilu była skalowalna n+ na wielu serwerach WWW i aplikacjach oraz próba znalezienia sposobu na zrobienie tego w warstwie bazy danych. Jakie są najlepsze praktyki, aby osiągnąć wysoką skalowalność w tym środowisku? (Obecnie mamy kilka milionów użytkowników, ale spodziewamy się, że przekroczymy ten poziom). Dziękuję!


title: Czy nieznane frameworki denerwują Cię?

text: Nasza firma jest małym (nietechnicznym) start-upem, który obecnie przechodzi proces transformacji programistycznej. Rozważaliśmy zatrudnienie lokalnej firmy zajmującej się tworzeniem stron internetowych do współpracy w ramach projektu. Usiadłem z programistą z jednej z tych firm i oprowadziłem go po naszej bazie kodu. Wyglądał na całkiem mądrego faceta i chociaż przyznał, że nie ma doświadczenia z naszym szczególnym frameworkiem PHP (rymy z „Bend”), wydawał się być całkowicie zdolnym programistą. Następnego dnia dowiedzieliśmy się, że nie chcą z nami pracować z powodu naszego wyboru frameworka. W przypadku osób, które zajmują się konsultingiem lub pracują na rzecz rozwoju, w jakim stopniu wybór ram przez klienta wpływa na decyzję o przyjęciu klienta? Oczywiście język i platforma robią ogromną różnicę (nie spodziewałbym się, że sklep PHP napisze C#), ale jako programista zawsze wybierałbym klienta korzystającego z dowolnego frameworka, zamiast takiego, który tego nie robi. Wiem, że każdy ma swój własny poziom komfortu i obszary, w których się specjalizuje, ale czy czujesz się komfortowo, zmagając się z nową technologią uzbrojoną tylko w niektóre dokumenty API i Google? Czy starasz się to jak najbardziej wyjaśnić klientowi? Jakie są powody, dla których odrzuciłbyś komuś wybór frameworka (zakładając, że wpadł on w twoją podstawową sferę wiedzy)? A przy wszystkich dostępnych frameworkach, w jaki sposób jeden programista miałby kiedykolwiek wybrać coś, co może obsługiwać inni?


title: Możliwe dziury w podejściu do zapobiegania rejestracji spamu?

text: Myślałem o utworzeniu kodu logowania (prawdopodobnie do pracy z BrowserID, aby użytkownicy nie musieli przechowywać swoich haseł w mojej witrynie, jednocześnie zapewniając, że dostarczone konto e-mail należy do nich), który wymagał, aby wszelkie konta użytkowników były adresem e-mail w „.name” lub ewentualnie „.me” TLD (lub w jakiejkolwiek innej TLD, która była przeznaczona wyłącznie dla osób fizycznych lub indywidualnych pracowników korporacyjnych – tj. nie jest otwarta do publicznej rejestracji) i być może zabrania subdomen (ponieważ może to być kuszące dla niektórych firm kupić domenę generyczną i wydzierżawić spersonalizowane subdomeny); oczywiście nie powstrzymałoby to firmy przed wynajmowaniem nazw takich jak user123@spam-friendly-site.name, ale ponieważ TLD jest przeznaczone dla osób fizycznych, miejmy nadzieję, że łatwiej byłoby umieścić na czarnej liście takie witryny, które umożliwiają złe zachowanie. Cel byłby dwojaki: 1. Podnieść próg dla spamerów, ponieważ musieliby albo kupić nową domenę za każdym razem, gdy chcieliby mieć nowe konto spamowe (a wszelkie nadużywające _domeny_ mogłyby zostać umieszczone na czarnej liście i udostępnione jako lista publiczna) lub uzyskać kontrola konta e-mail lub przeglądarki/systemu legalnego użytkownika. 2. Zachęć ludzi do zrzucenia jarzma uzależnienia od stałych stron trzecich w zakresie e-maili, a także hostingu stron internetowych, czatów itp. poprzez uzyskanie własnych domen. Nie chciałoby się takiego numeru telefonu jak 555-123-1234@att.com, ponieważ nie można było dowolnie zmieniać dostawców. I bez wątpienia jest wielu niedoszłych twórców treści, którzy udostępnialiby swobodniej, gdyby mieli należącą do nich witrynę. Jeśli ktoś chciałby być anonimowy, mógłby zarezerwować domeny takie jak anonimowy567.nazwa (np. ja@anonimowy567.nazwa) - i byłoby to w porządku dla mnie, ponieważ moim celem nie jest pozytywna identyfikacja osób poza kontekstem potwierdzenia, że kontrolują adres e-mail, który mi podają, ale w celu podniesienia barier dla spamerów. Dodałoby to niewielką cenę za tworzenie treści w witrynie, ponieważ użytkownicy musieliby kupić domenę i skonfigurować w niej pocztę e-mail, a kosztowałoby to więcej, aby stać się naprawdę anonimowymi (np. kupować oddzielne domeny dla każdej witryny, aby uniknąć śledzenia między witrynami ), ale uważam, że ciężar nie powinien spoczywać na witrynach z treścią, aby radzić sobie z rejestracją spamu. Jeśli to naprawdę się zacznie, można również skonfigurować filtry poczty e-mail, aby blokować również osoby nienależące do tak spersonalizowanej domeny, dając automatyczną odpowiedź, jak się zarejestrować. Czy ktoś ma opinie na temat pomysłu, a konkretnie jakichś nieoczekiwanych barier, które mogę napotkać (takich jak sposoby jego obejścia)? Wiem oczywiście, że będzie to stanowić barierę dla niektórych użytkowników, ale jakieś potencjalne wyzwania techniczne?


title: Samodzielna aplikacja VB lub aplikacja internetowa ASP

text: Mam doświadczenie w tworzeniu oprogramowania i aplikacji internetowych i postanowiłem pracować jako freelancer na boku. Cóż, spotkałem się z moim pierwszym klientem, który poprosił o stosunkowo prosty, niestandardowy system, który (bez długiego zwijania) śledzi papierkową robotę klienta w miarę postępów w różnych ręcznych procesach firmy. Jest to mała firma, która ma około 10 pracowników, ale wszyscy pracownicy będą wchodzić w interakcje z dokumentacją klienta, dlatego każdy będzie potrzebował dostępu do nowego systemu. Kiedy mówię **śledź**, dosłownie mam na myśli to, że pracownicy będą **sprawdzać, czy są kompletne** na prostej stronie, co zwiększa pasek postępu na różnych etapach pracy papierkowej. Teraz jestem w stanie %110 zakodować niestandardowy system, który spełnia ich potrzeby, ale nie jestem pewien, jak powinienem to zrobić. Informacje, które są śledzone w nowym systemie i przechowywane w bazie danych, są informacjami poufnymi, które są bardzo chronione. Moje główne pytanie brzmi, jak mam to rozwijać, aby było tak bezpieczne, jak tylko mogę? * Mają własny serwer, więc czy powinienem opracować aplikację (VB i SQL) na serwer i wymagać od pracowników zdalnego logowania się, aby z niej korzystać? Czy więcej niż jedna osoba może mieć dostęp/korzystać z aplikacji jednocześnie? * A może powinienem opracować aplikację internetową (ASP.Net/VB i SQL), która jest dostępna tylko w ich sieci dla pracowników? Planują rozbudowę biur, czy mogliby skonfigurować VPN, aby uzyskać dostęp do witryny? Skłaniam się ku aplikacji webowej, ale nie zrobiłem zbyt wiele w kwestii bezpieczeństwa. Jakie mam konkretne opcje bezpieczeństwa, które nie są zbyt skomplikowane. Zasadniczo szukam zalet i wad dla opcji lub sugestii dotyczących tego, co powinienem.


title: Czy testowalność i mockability są naprawdę tak ważne w tworzeniu stron internetowych?

text: Czytam tę serię na Laravelu i jest ona bardzo dogłębna w sprawie uczynienia wszystkiego testowalnym, używając _Repozytorium_ zamiast tylko używania _Modelów_, używając _Wstrzykiwania zależności_ i innych niejasnych technik. Mam wrażenie, że dodanie całej tej dodatkowej złożoności w imię Testability może nie być właściwą rzeczą. Pisanie testów jednostkowych na wszystko, co brzmi po prostu głupio. Używałem Laravela już wcześniej, bez tych wszystkich „testowalności” i po prostu działało. Czy „testowalność” jest warta wysiłku i utrudnia zrozumienie kodu? (zauważ, że publikuję tutaj zamiast StackOverflow, ponieważ jest to rodzaj opinii. Mam nadzieję, że nie będę mile widziany za to pytanie.)


title: Ustawianie pól z poprawną wartością domyślną

text: Pisząc konstruktory regularnie spotykam się z sytuacją, w której niektóre pola mają już odpowiednie (domyślne) wartości, takie jak `false` dla wartości logicznych i `0` dla liczb całkowitych. Jakie są powody, aby podkreślać te wartości, na przykład: `stan = 0;` Czy doceniasz to, gdy czytasz czyjś kod? Z jednej strony mam ochotę wyrazić szczegóły implementacji wprost, z drugiej strony uważam, że nie ma sensu ustawiać pola, gdy mam pewność, że jest już poprawne.


title: Dlaczego architektura warstwowa nie przekłada się łatwo na architekturę warstwową?

text: Zasadniczo staram się zrozumieć, dlaczego warstwowe i warstwowe są tak różne i dlaczego nie przekładają się łatwo na siebie. Rozumiem, że warstwami mogą być 3 oddzielne pliki klas dla UI, BL i DAL. Natomiast warstwowy może być Projekt dla interfejsu użytkownika, który łączy się z projektem BL, który łączy się ze strukturą encji typu DAL, a następnie z bazą danych. Dlaczego więc łatwo je przetłumaczyć? Mam nadzieję, że to ma sens, Dzięki.


title: Cron'owanie skryptów PHP, które zapisują do innych plików.

text: Tak więc klient, dla którego teraz pracuję, ma naprawdę duży czas ładowania, więc staramy się golić każdą możliwą mikrosekundę. Niedawno znaleźliśmy plik, który ściągał kilka blogów z prasą tekstową i dodawał solidną sekundę do czasu ładowania. Teraz nie napisałem tego konkretnego skryptu i być może będę mógł go zoptymalizować później, ale na razie zrobiłem skrypt, który zapisuje wyjście skryptu wp do innego pliku, a potem po prostu odwołuję się do tego pliku, kiedy potrzebujemy to. Uruchamiamy cron na napisanym przeze mnie skrypcie, aby co jakiś czas sprawdzał skrypt wp i w razie potrzeby wyświetlał wszelkie aktualizacje. To oczywiście naprawdę przyspieszyło sprawę, ale po prostu nigdy wcześniej tego nie robiłem, więc jestem ciekaw: * oczywiście mamy plik z uprawnieniami 777, jakie mam obawy związane z bezpieczeństwem? * Czy jest to dobra strategia na ograniczenie w przyszłości, gdy przetwarzanie nie musi odbywać się w momencie załadunku?


title: Jak nazwać wersję aplikacji, aby użytkownik nie dowiedział się, że nie zmienia się podczas aktualizacji?

text: Wiem, że to dziwne wymaganie, ale chcemy stworzyć jakiś ciąg wersji, który się nie zmieni, a to uniemożliwiłoby użytkownikowi zauważenie, że po aktualizacji wersja jest taka sama jak poprzednio. Przykład asfkl1sd35f1s3df15s53dfs1df3sd15s3fsf Ale to jest dość brzydkie i może przyciągnąć zbyt dużo uwagi :) Z drugiej strony proste napisy są łatwe do rozróżnienia i można zauważyć, że nie zmienia się w czasie... Więc w zasadzie chcemy mieć tę samą wersję, ale nie nie chcę słyszeć, jak użytkownicy narzekają, że zaktualizowali aplikację, a wersja jest taka sama. Jakieś pomysły?


title: Prawa autorskie/licencje na kompletne przepisanie

text: Istniała aplikacja dla PalmPilots, która podobała mi się w czasach, gdy PalmPilots istniał. Chcę go odtworzyć (a przynajmniej to, co z niego pamiętam) na nowoczesne urządzenia mobilne. Problem polega na tym, że po przeszukaniu internetu w poszukiwaniu informacji na temat aplikacji lub oryginalnego autora nie mogę nic znaleźć. Nie mogę nawet znaleźć żadnych plików binarnych dla aplikacji. Ponieważ nie mam absolutnie nic poza wspomnieniami do pracy, będę musiał napisać to od zera, ale moim zamiarem jest jak najbardziej zbliżyć go do oryginału. Ponieważ nie mam pojęcia, kim był oryginalny autor ani jaka była oryginalna licencja (wiem, że była to przynajmniej darmowa), zastanawiam się, w jakim stopniu mogę to zrobić. Nie planuję pobierania opłat za przepisanie i chciałbym licencjonować go na licencji GPL lub podobnej. Wiem, że jest to prawdopodobnie szary problem, ale czy jest to bliższe jasnoszaremu lub ciemnoszaremu? EDIT: Dodam również, że wiem na pewno, że jakikolwiek tekst lub grafika (tj. cokolwiek poza kodem/funkcjonalnością/układem UI/ogólną koncepcją) byłyby licencjonowane autorowi w taki sposób, że bez wątpienia również móc z nich korzystać.


title: Czy repozytorium należy do tego projektu?

text: Mam projekt, który pobiera wszystkie dane z wywołań API. Serwer, który obsługuje to API, łączy się ze swoją własną bazą danych (nie jest nawet pewien, jaka to baza danych itp.). Mniej więcej idea repozytorium polega na oddzielaniu danych i ich mapowaniu, prawda? Nie powinienem się martwić, skąd pochodzą moje dane. Ale jeśli pod koniec dnia są to wywołania API, czy samo repozytorium powinno wykonywać wszystkie wywołania API w ramach swoich metod? Na przykład, gdybyśmy mieli w repozytorium metodę FindBY, czy ta metoda powinna być tą, która wywołuje API?


title: Dobry substytut metod usług internetowych ASMX, ale nie ogólny program obsługi

text: Najlepszą rzeczą, którą lubię w ASP.NET MVC, jest to, że możesz bezpośrednio wywołać metodę serwera (zwaną akcją) od klienta. Jest to tak wygodne i tak proste, że bardzo lubię implementować taki model również w ASP.NET WebForms. Jednak w ASP.NET WebForms, aby wywołać metodę serwera z klienta, należy użyć **Page Methods** lub Web Services, z których oba używają protokołu SOAP jako protokołu komunikacyjnego (chociaż można również użyć JSON). Istnieje również inna zamiana, która używa Generic Handlers. Problem z nimi polega jednak na tym, że dla każdej metody serwera należy napisać oddzielny Generic Handler. Innymi słowy, każdy Generic Handler działa jak prosta metoda. Czy mimo to można naśladować model MVC w formularzach ASP.NET WebForms? Zwróć uwagę, że nie mogę teraz przejść na platformę MVC, ponieważ projekt z naszej ręki jest dużym projektem i nie mamy wymaganych zasobów i czasu, aby zmienić naszą platformę. To, czego szukamy, to prosta implementacja modelu MVC dla naszych wywołań AJAX. Problem, który mamy z usługami sieci Web, to znany problem SoapException i nie jesteśmy zainteresowani tworzeniem niestandardowych rozszerzeń SoapExctensions.


title: Sortowanie tablicy ArrayList według podzielonej wartości

text: Próbuję utworzyć listę, która powinna być posortowana według określonego pola w ciągu oddzielonym dwukropkami. Mam tablicę ciągów z następującymi wartościami: nazwa1:535 nazwa2:697 Po posortowaniu tej listy chciałbym ją posortować według numeru w drugim polu: nazwa2:697 nazwa1:535 Jak mam to zrobić? są jakieś problemy, o których powinienem wiedzieć podczas sortowania tej listy ciągów?


title: Co powinienem umieścić w komentarzach, zobowiązując się do kontroli źródła?

text: Jestem samotnym programistą i utrzymuję serwer SVN do kontroli źródeł. Do tej pory nie śledziłem niczego konkretnego podczas zatwierdzania zmian. Właśnie przeglądałem moje poprzednie zmiany i nie mogłem zrozumieć moich komentarzy. Co umieszczasz w komentarzach podczas dokonywania meldunków?


title: Bezproblemowe przenoszenie naszej aplikacji internetowej ze środowiska programistycznego Windows do środowiska linux

text: Staram się stworzyć aplikację internetową na komputerze z systemem Windows przy użyciu wicket apache, java, jquery itp. wicket Apache jest wyposażony w wbudowany serwer jetty. Używam zaćmienia jako IDE. Aplikacja musi mieć dostęp do niektórych zasobów, takich jak pliki konfiguracyjne itp., które znajdują się na zdalnej maszynie (serwerze linux), do którego możemy ssh, po zakończeniu rozwoju chcielibyśmy wdrożyć tę aplikację na serwerze tomcat hostowanym na tym serwerze linux. Jak bezproblemowo przejść ze środowiska programistycznego Windows do wdrożenia serwera linux? Obecnie rozwijamy program, kopiując najnowsze pliki konfiguracyjne z serwera, jednak jest to podatne na błędy, ponieważ śledzenie najnowszych plików konfiguracyjnych staje się trudne, co prowadzi do nieoczekiwanego zachowania podczas wdrażania aplikacji. Nasz zespół znajduje się w Indiach, a nasze serwery znajdują się w USA, mapowanie plików konfiguracyjnych i uzyskiwanie do nich dostępu nie mają dobrych czasów odpowiedzi.


title: Obiekt PaypalCheckout składa się z obiektów PaypalQuery. Ukryć obiekty PaypalQuery dla użytkowników PaypalCheckout?

text: Mam obiekt `PaypalCheckout`, który obsługuje proces kasowania: od inicjowania wywołań API, do dostarczania interfejsu dla kodu front-endu (np. Widok/Kontroler). Obiekt `PaypalCheckout` obsługuje: pobranie szczegółów ceny z koszyka, przekierowanie do PayPal w celu dokonania płatności, pobranie danych adresowych klienta z Paypal, wysłanie potwierdzenia płatności do paypal i ostateczne ustalenie statusu płatności. Czyni to poprzez tworzenie instancji dzieci abstrakcyjnej klasy `PaypalQuery`, takiej jak `PaypalQuery_StartCheckout`, PaypalQuery_GetAddressDetails`,`PaypalQuery_ConfirmPayment`. **Moje pytanie dotyczy sposobu organizowania metod w `PaypalQuery_ConfirmPayment` i 'PaypalCheckout':** Obecnie moje obiekty `PaypalQuery_ConfirmPayment` mają takie metody jak: * `funkcja publiczna isPaymentSuccessful();` * `funkcja publiczna isPaymentPending() ` * `funkcja publiczna hasItemNotReceivedProtection()` * `funkcja publiczna getPendingReason()` Miałem nadzieję ukryć wszystkie metody obiektów `PaypalQuery` przed kodem front-endu. Problem polega na tym, że wymagałoby to tworzenia metod w `PaypalCheckout`, które ślepo wywołują i zwracają metody w klasach `PaypalQuery`. Chociaż nie jest to zbyt uciążliwe, „pachnie”. Choć umykają mi zapachy, nie mówiąc już o najlepszych rozwiązaniach. Mam nadzieję, że będzie to proste - chociaż mogę w przyszłości dodać inne opcje płatności oprócz Paypal, nie mam nic przeciwko refaktoryzacji w tym późniejszym terminie. Ponadto, na wypadek gdyby miało to znaczenie, nie sądzę, że używam żadnych tradycyjnych wzorców ramowych, takich jak MVC - (chociaż zaczerpnąłem z nich pomysły). Robię to w PHP. Z jakich rozwiązań mogę skorzystać? Dziękuję


title: Biegacz CI na tym samym serwerze GitLab?

text: Konfiguruję serwer GitLab w swojej firmie i teraz dodaję do niego GitLab CI. Przed rozpoczęciem tego zadania chciałbym zrozumieć, czy uruchamianie moich runnerów na tym samym serwerze, z którego korzystają GitLab i GitLab CI, ma jakieś wady. Czytałem, że istnieją obawy dotyczące bezpieczeństwa, ale używamy go tylko wewnętrznie, więc nie sądzę, że może to stanowić problem. Czy czegoś mi brakuje?


title: Jak najlepiej zorganizować spaghetti Javascript na kliencie z architekturą serwera MVC?

text: Projekt LAMP, nad którym obecnie pracuję, jest dość dobrze zorganizowany na zapleczu. Istnieje jednak mnóstwo stron, które po prostu mają biegunkę javascriptu i html rozrzucone po wielu lokalizacjach z mało dostrzegalną architekturą, rymem lub powodem. W kilku przypadkach stworzono pewien rodzaj prototypu javascript dla wspólnej kontroli, a obecny framework MVC zajmuje się szablonowaniem stron. Jak zaczynamy kontrolować cały ten kod spaghetti? W projektach backendowych zacząłbym od wprowadzenia testów jednostkowych, CI, refaktoryzacji wspólnego MVC lub kodu modelu/mappera itp.


title: Dobre zasoby do projektowania formularzy internetowych i użyteczności

text: Czy ktoś może zaproponować dobre zasoby dotyczące projektowania formularzy internetowych i użyteczności aplikacji internetowych? Szczególnie złożone formularze z ponad 15 polami itp.


title: Czy powinienem zacząć nawiązywać kontakty, nawet jeśli nie jestem jeszcze gotowy do pracy?

text: Pierwsza praca jest zawsze najtrudniejsza do zdobycia i nie jestem wyjątkiem. Mam 23 lata i nie mam dyplomu ukończenia studiów, ale planuję iść na studia w tym roku, jeśli wszystko pójdzie dobrze (CS oczywiście). Uczę się teraz samodzielnie języka Java. Znam większość tematów związanych z językiem poza bardziej zaawansowanymi tematami i zaczynam przyglądać się projektom open source. Chciałbym znaleźć pracę (przynajmniej na pół etatu) po roku lub dwóch, kiedy zdobędę więcej doświadczenia i dowiem się więcej o technologiach java i innych technologiach, które mnie interesują. Znalezienie pracy będzie trochę trudne, ponieważ większość ludzi (a przynajmniej dużo z nich) w moim obecnym wieku ma już 2 lata lub więcej doświadczenia, więc będę w nieco gorszej sytuacji. Czy powinienem zacząć budować połączenia i dołączać do stron internetowych, takich jak linkedin? Nigdy nie zadawałem sobie trudu, aby się temu przyjrzeć, ponieważ nie jestem osobą z sieci społecznościowych. Jeśli zacznę współtworzyć projekty open source i tworzę własne projekty przez 2 lata, czy mogę ubiegać się o pracę, która wymaga 1-2 lat doświadczenia? Czy to doświadczenie się liczy?


title: Problem algorytmu równych prezentów

text: Problem Link - http://opc.iarcs.org.in/index.php/problems/EQGIFTS > Są urodziny Lavanyi i kilka rodzin zostało zaproszonych na > przyjęcie urodzinowe. Jak zwykle wszyscy przynieśli prezenty dla Lavanyi > oraz dla jej brata Nikhila. Ponieważ ich przyjaciele są erudyci > uprzejmi, każdy przyniósł ze sobą parę książek. Niestety, ofiarodawcy > nie wskazali wyraźnie, która książka w parze jest przeznaczona dla Lavanyi, a która > dla Nikhila. Teraz ich ojciec musi podzielić te książki między siebie. > > Zdecydował, że z każdej z tych par jedna książka trafi do Lavanyi > a druga do Nikhila. Co więcej, ponieważ Nikhil jest całkiem uważnym obserwatorem wartości prezentów, księgi należy podzielić w taki sposób, aby całkowita wartość ksiąg dla Lavanyi była jak najbardziej zbliżona do całkowitej wartości ksiąg dla Nikhila. . Ponieważ Lavanya i Nikhil są dziećmi, żadna książka, która została > uzdolniona, nie będzie miała wartości wyższej niż 300 rupii... Jeśli chodzi o problem, nie mogłem wymyślić nic poza rekurencją. Kod, który napisałem znajduje się poniżej. Ale problem polega na tym, że kod jest nieefektywny czasowo i daje TLE (Przekroczony limit czasu) dla 9 na 10 przypadków testowych! Jakie byłoby lepsze podejście do problemu? Kod — #include<cstdio> #include<climits> #include<algorytm> przy użyciu standardowej przestrzeni nazw; int n,g[150][2]; int diff(int a,int b,int f) { ++f; if(f==n) { if(a>b) { zwróć a-b; } else { return b-a; } } return min(diff(a+g[f][0],b+g[f][1],f),diff(a+g[f][1],b+g[f][0 ],f)); } int main() { int i; scanf("%d",&n); for(i=0;i<n;++i) { scanf("%d%d",&g[i][0],&g[i][1]); } printf("%d",diff(g[0][0],g[0][1],0)); } Uwaga - To tylko pytanie ćwiczeniowe i nie jest częścią konkursu.


title: Dowody naukowe przemawiające za używaniem długich nazw zmiennych zamiast skrótów?

text: Czy istnieją dowody naukowe na to, że ludzki mózg potrafi czytać i rozumieć w pełni zapisane nazwy zmiennych lepiej/szybciej niż te skrócone? Podobnie jak PersistenceManager persistenceManager; w przeciwieństwie do PersistenceManager pm; Mam wrażenie, że lepiej rozumiem kod, który nie używa skrótów, nawet jeśli skróty byłyby powszechnie stosowane w całym kodzie. Czy to indywidualne uczucie może być poparte jakimikolwiek badaniami?


title: Udostępnij wiele klas jako jedną bibliotekę DLL lub bibliotekę z wieloma projektami

text: Obecnie posiadam kilka wspólnych plików klas (.cpp i .h), które umieszczam w około 20 projektach. Obecnie muszę je uwzględnić we wszystkich projektach. Więc jeśli dostanę jakieś wymagania biznesowe i zmienię niektóre udostępnione pliki (.cpp lub .h), muszę je uwzględnić we wszystkich 20 projektach, co jest trochę nużące. Czy istnieje sposób, w jaki mogę utworzyć udostępnioną bibliotekę dll lub bibliotekę i uwzględnić ją we wszystkich moich projektach. Więc jeśli muszę to zmienić, muszę to zmienić raz, a następnie po prostu Dodaj odwołanie, aby uwzględnić tę bibliotekę dll lub bibliotekę, która zawiera wszystkie pliki współdzielone (.cpp, .h). Wszelka pomoc / zalecenia dotyczące tego samego będą bardzo mile widziane. Używam VS2012 dla VC++.


title: Czy mogę mieć kłopoty, jeśli podłączę się do istniejącej usługi/aplikacji z własną aplikacją i naliczę za nią opłatę?

text: Wiem, że to bardziej pytanie prawnika, ale wydaje mi się, że ktoś tutaj prawdopodobnie to zrobił i może mi udzielić szybkiej odpowiedzi. Weźmy umiarkowanie skrajny przypadek. Tworzę adapter dla strony internetowej, który tłumaczy żądania i znaczniki na bardziej formalne API. Następnie biorę opracowane przeze mnie API i buduję na nim aplikację mobilną. Krótko mówiąc, biorę witrynę, która nie obsługuje urządzeń mobilnych. Zbuduj aplikację mobilną, a następnie pobierz opłatę za aplikację mobilną. Nie mówię o pobieraniu opłat za którykolwiek z oryginalnych produktów. Po prostu rozszerzenie produktu. Pytam, ponieważ jest strona, dla której naprawdę chciałbym zbudować aplikację mobilną, ponieważ ułatwiłoby mi to życie i byłoby całkiem nieźle, gdybym mógł również zarobić trochę gotówki z pracy.


title: Implementacja systemu plików w MongoDB z GridFS

text: Pracuję nad dwoma projektami, które zaimplementują serwer Webdav wspierany przez MongoDB GridFS. W każdym przypadku system może przechowywać dziesiątki milionów plików rozmieszczonych w tysiącach katalogów hierarchicznych. Mogę wymyślić dwa różne sposoby przechowywania struktury katalogów: * Jako „prawdziwy” hierarchiczny system plików, z katalogami zawierającymi identyfikatory (`_id`) podkatalogów i zwykłych plików. Ścieżki będą oddzielone ukośnikami (`/`), tak jak w systemie plików zgodnym z POSIX. * Ścieżka `/a/b/c` będzie reprezentowana jako katalog `a` zawierający katalog `b` zawierający plik `c`. * Jako płaski system plików, w którym nazwy plików zawierają ukośniki. * Ścieżka `/a/b/c` będzie przechowywana jako pojedynczy plik o nazwie `/a/b/c` Jakie są zalety i wady każdego z nich w odniesieniu do "prawdziwego" systemu plików opartego na folderach ?


title: Najlepsza alternatywa dla pliku właściwości w Javie

text: Hej, pracuję nad produktem, który jest na żywo na wielu portalach. Produkt jest rozwijany w GWT, JAVA, Hibernate. **Moje pytanie brzmi:** Czy istnieje jakakolwiek alternatywa używania pliku właściwości w javie. **Moje wymaganie :** 1. Dla jednego klucza właściwości istnieje wiele wartości w aktywnym portalu dla każdego innego portalu. 2. Za każdym razem, gdy zmieniam plik właściwości, muszę ponownie rozpocząć wojnę. 3. Załadunek jakiejkolwiek nieruchomości nie powinien być czasochłonny. Każda pomoc lub sugestia byłaby cenna !!!


title: Pojęcie pól bitowych

text: Ilekroć czytam taki kod: struct node { int x: 2; wew p : 4; }n; z zaangażowanymi polami bitowymi, naprawdę się mylę, co do tego, jak są one reprezentowane w pamięci, co to jest `sizeof(n)` itd., czym różni się od normalnych członków struktur? Próbowałem odnieść się do K&R i http://en.wikipedia.org/wiki/Bit_field, ale niewiele, aby usunąć moje zamieszanie. Jakich koncepcji pól bitowych nie rozumiem?


title: Czy dobrą praktyką jest posiadanie logiki w kodzie źródłowym w celu wykonania niektórych testów?

text: Nie chodzi o zmianę widoczności metody/funkcji czy wyodrębnienie zmiennej lokalnej do zmiennej instancji w celu wykonania testów jednostkowych. Są przypadki, w których moglibyśmy zawrzeć pewną logikę w kodzie źródłowym, aby pomóc nam w przeprowadzeniu niektórych testów funkcjonalnych lub testów end-to-end. Ogólnie rzecz biorąc, kody te oddziałują bezpośrednio z główną logiką i jeśli kod testowy jest wadliwy, wpływa to na logikę biznesową. Jednym z przykładów może być to, że mamy kod testowy związany z logiką daty/czasu, więc jeśli testerzy zmienią czas serwera i klienta, ten kod może pomóc im w przeprowadzeniu niektórych testów. Więc jak źle myślisz, że to jest, skoro nie ma innego łatwego (jego) sposobu na przetestowanie tej części logiki biznesowej? Proszę o komentarz, jeśli to proste wyjaśnienie jest zbyt niejasne i potrzebujesz więcej przykładów.


title: Wiele argumentów w klasach przypadków

text: Ogólnie czytałem, że posiadanie wielu (>4) argumentów do funkcji/konstruktora jest złą praktyką. 1. Czy to nadal jest uważane za złą praktykę? A czy istnieje nieoczywisty powód? 2. W czymś takim jak Scala Case Class, gdzie może być wiele pól, co można zrobić, aby uniknąć takiej konstrukcji? (Nie jestem pewien, czy to najlepiej pasuje tutaj, SO lub CodeReview)


title: Przekazywanie zmiennej składowej jako parametru metody

text: W projekcie znalazłem taki kod: class SomeClass { private SomeType _someField; public SomeType SomeField { get { return _someField; } ustaw { _someField = wartość; } } protected virtual void SomeMethod(/*...., */SomeType jakaśVar) { } private void SomeAnotherMethod() { //............. SomeMethod(_someField); //............. } }; Jak przekonać kolegów z drużyny, że to zły kod? Uważam, że to niepotrzebna komplikacja. Po co przekazywać zmienną składową jako parametr metody, jeśli masz już do niej dostęp? Jest to również pogwałcenie hermetyzacji. Czy widzisz jakieś inne problemy z tym kodem?


title: Dlaczego przedrostki nazw kolumn są uważane za złą praktykę?

text: Według popularnego posta SO jest uważane za złą praktykę przedrostek nazw tabel. W mojej firmie **każda kolumna** jest poprzedzona nazwą tabeli. To jest dla mnie trudne do odczytania. Nie jestem pewien, dlaczego, ale to nazewnictwo jest w rzeczywistości standardem firmy. Nie znoszę konwencji nazewnictwa, ale nie mam dokumentacji na poparcie mojego rozumowania. Wiem tylko, że czytanie AdventureWorks jest znacznie prostsze. W ~~tym~~ naszej bazie danych firmy zobaczysz tabelę, Osoba i może ona mieć nazwę kolumny: Osoba_Imię lub może nawet Osoba_Osoba_Imię (nie pytaj mnie, dlaczego widzisz osobę 2x) Dlaczego uważa się, że złą praktyką jest przed- naprawić nazwy kolumn? Czy podkreślenia są również uważane za złe w SQL? * * * Uwaga: Posiadam Pro SQL Server 2008 - projekt i implementacja Relacji Bazy Danych. Mile widziane są odniesienia do tej książki.


title: Czy dodanie punktów premiowych lub funkcji gier do oprogramowania w miejscu pracy będzie źle postrzegane przez społeczność programistów?

text: Tak więc jednym z moich obowiązków w pracy jest zbudowanie wewnętrznego narzędzia, które pomaga pracownikom wprowadzać wszystkie informacje. Jest to aplikacja korporacyjna podobna do narzędzia bazy danych formularzy systemu Windows. Nie różni się to więc zbytnio od tworzenia aplikacji typu combo Word + Excel, ale przeciętna osoba w tej grupie roboczej to 20-40 letnia kobieta lub przypadkowy gadatliwy mężczyzna. Poza tym wiem, że wszystkie te osoby są na co dzień mocno związane z Facebookiem. Jak źle by było, gdybym stylizował swój nowy interfejs tak, aby był podobny do tego, co robi Facebook. Ludzie mogli zdobywać punkty i inne rzeczy, wypełniając różnego rodzaju formularze i zasadniczo rywalizując ze sobą, jakby to była gra. Kiedy ludzie ukończą jeden, zostanie on umieszczony na ich ścianie i każdy będzie mógł komentować/polubić rzeczy, tak jak na Facebooku. I byłoby tak, jakby robili recenzowanie dla zabawy. Wyobrażam sobie, że nagrody byłyby znakomite. Ci ludzie tak bardzo interesują się grami na Facebooku i Facebooku, że produktywność wzrosłaby, ponieważ próbowali konkurować i zdobywać punkty i osiągnięcia. Czy byłoby to wykorzystywanie ludzi poprzez „nakłanianie ich do cięższej pracy poprzez danie im gry”, czy też byłoby to postrzegane jako coś, co poprawiłoby szczęście w pracy?


title: Tablice a obiekty w szablonie widoku

text: Zastanawiam się, w szablonach widoków, co przyczyniłoby się do wyboru między używaniem tablic lub obiektów do drukowania rzeczy w tablicach `{{$user->zip_code}}` vs `{{$user['zip_code']}} ` Pracuję nad szablonami ostrzy w Laravel/PHP fwiw. Mam wrażenie, że używanie obiektów ma sens: możemy użyć metod, jeśli potrzebujemy wyświetlić/sformatować dane, widok wygląda znacznie czyściej, a bc tego, jak działa PHP, kończy się niepowodzeniem, jeśli element nie jest ustawiony ( nieustawiona wartość tablicy będzie rzygać, więc musisz albo upewnić się, że wszystkie możliwe właściwości są obecne, ale są fałszywe, albo wykonać `{{(isset($user['zip_code'])) ? $user['zip_code'] : ' '}}` dla wszystkiego, czego używasz w widoku.Napotkałem jednak kilka sprzecznych opinii, takich jak: im mniej widok wie o warstwach pod nim, tym lepiej.W związku z tym lepiej jest używać „płaskich” wartości (tablic). w widoku.Nie powinniśmy ufać, że widok nie eksploduje, jeśli nie jest ustawiona wartość, która powinna być obsługiwana w kontrolerze.Ponieważ właściwości naszych obiektów nie są zakodowane w modelach w tym systemie, nie możemy polegać na każdym obiekcie zawsze mieć te same informacje na poziomie modelu. Zastanawiam się, czy w grę wchodzą tutaj inne czynniki. Albo… Czy to nie ma znaczenia


title: Niewygodna terminologia

text: Nie wyobrażam sobie używania terminologii typu "zapach kodu", scrum "kurczaki", "świnie" w moim miejscu pracy. Tego typu terminy po prostu nie pasowałyby do mojego środowiska. Moi współpracownicy patrzyli na mnie i kazali mi dorosnąć albo przestać być obraźliwym lub podobnym. Czy ktoś inny uważa terminologię używaną na tej stronie lub inną pokrewną terminologię za niewygodną w pracy?


title: Czy dowody algebry/rachunku relacyjnego mogą być użyte do testowania/weryfikacji SQL?

text: Czy jest możliwe, a nawet możliwe, wykorzystanie algebry relacyjnej i/lub rachunku relacyjnego w postaci dowodów do testowania/weryfikacji poprawności instrukcji SQL, funkcji i procedur składowanych? Wydaje mi się, że powinno to być przynajmniej możliwe, ale nie wiem, czy brakuje mi jakiegoś szczegółu, który sprawia, że mapowanie 1:1 między dowodem a kodem jest nieprawidłowe. Czy ktoś z was próbował takiej metody? Zadziałało? Jakie były twoje doświadczenia?


title: Zapisywanie-odczyt tablicy hash do pliku tekstowego

text: Implementuję strukturę hashtable dla słownika. Słownik znajduje się w pliku tekstowym. W każdym wierszu są 2 słowa. Generuję tablicę mieszającą, używając pierwszego słowa jako klucza. Trzymam tablicę mieszającą na liście. Chcę zapisać hashtable do pliku tekstowego, aby używać go za każdym razem. Jakiej struktury powinienem użyć? Czy można to zrobić bez czytania całej tablicy haszującej z pliku tekstowego?


title: Które języki bardziej sprzyjają telepracy, a także mniej zajmują się parowaniem?

text: Nie wiem, czy to może nawet zrobić różnicę, a myślę, że gdyby tak było, różnice byłyby raczej kulturowe niż techniczne, ale gdyby ktoś miał dzisiaj (2011) wyruszyć na naukę języka, a konkretnie chciał pracować zdalnie (aby mogli mieszkać w dwóch różnych miejscach w ciągu roku), czy są jakieś języki, których kultura bardziej przychylnie odnosi się do telepracy niż inne języki/kultury? Na przykład odnoszę wrażenie (i prawdopodobnie całkowicie się mylę), że w społeczności Ruby bardziej prawdopodobne jest, że będziesz na miejscu i będziesz programować w parach (chociaż przypuszczam, że możesz też robić parowanie zdalnie). Pytanie uzupełniające, czy istnieją języki / społeczności, w których programowanie w parach jest mniej ważne dla osób, które chciały programować częściowo dlatego, że nie są motylami społecznościowymi?


title: W jakim języku programuje się zachowanie nano quadrotora?

text: Właśnie obejrzałem ten fascynujący i przerażający film. Jestem ciekaw jaki język programowania/paradygmat służy do sterowania tymi bestiami?


title: Jak wdrożyć oprogramowanie w moim pojeździe

text: Rozwijam System Monitorowania Bezpieczeństwa Kierowcy, który jest rodzajem małego oprogramowania, które zostanie zaimplementowane w samochodzie z podłączeniem do kilku kamer. Chcę wiedzieć **żeby zaimplementować to oprogramowanie w pojeździe, jakiego rodzaju komputera mogę używać?**


title: Przetwarzanie skryptów używających nawiasów klamrowych

text: Aby zorientować się, co robię, piszę parser Pythona, który będzie analizował pliki tekstowe directx .x. Problem, który mam, dotyczy sposobu formatowania plików. Chociaż piszę to w Pythonie, szukam ogólnych algorytmów do radzenia sobie z tego rodzaju analizowaniem. Pliki .x definiują dane za pomocą szablonów. Format szablonu to nazwa_szablonu { [niektóre_dane] } Moim celem jest przeanalizowanie pliku linia po linii i za każdym razem, gdy natrafię na szablon, odpowiednio się nim zajmę. Moje początkowe podejście polegało na sprawdzeniu, czy linia zawiera nawias otwierający lub zamykający. Jeśli jest to nawias klamrowy, to sprawdzę, jaka jest nazwa szablonu. Teraz haczyk polega na tym, że otwarty nawias nie musi występować w tym samym wierszu, co nazwa szablonu. Równie dobrze może to być nazwa_szablonu { [niektóre_dane] } Więc jeśli miałbym użyć moich kryteriów „otwarty nawias klamrowy istnieje”, to nie zadziała dla żadnych plików używających tego drugiego formatu. Wiele języków używa również nawiasów klamrowych (chociaż nie jestem pewien, kiedy ludzie sami analizowaliby skrypty), więc zastanawiałem się, czy ktoś wie, jak dokładnie uzyskać nazwę szablonu (lub w niektórych innych językach, może tak samo dobrze być nazwą funkcji, chociaż nie ma żadnych słów kluczowych do wyszukania)


title: Najtrudniejszy przedmiot/teoria w informatyce?

text: Jaki jest najtrudniejszy przedmiot/teoria CS, który studiowałeś, ale ważny dla tej dziedziny? A powód proszę?


title: Czy można żyć, nie wiedząc, jak działa stworzony przez Ciebie program?

text: Mam na myśli to, że istnieją naprawdę przydatne biblioteki, które mogą rozwiązać problemy, gdy utkniesz i nie wiesz, jak rozwiązać to czy tamto przy Twojej znajomości języka programowania, którego używasz... Na przykład Boost dla C++ lub JQuery dla JavaScript lub Spring dla Java... Rozwiązują problemy w kilka sekund i naprawdę nie obchodzi cię, jak to zrobili (pomimo tego, że są napisane w tym samym języku, w którym programujesz)... Zastanawiam się więc, czy jestem sam w korzystaniu z bibliotek, nie będąc potrafi pisać rozwiązania moich problemów od podstaw, czy jest to standardowa praktyka?


title: Szczegółowa definicja wzoru „kontenera nieruchomości”

text: Czy ktoś mógłby wyjaśnić, co to jest `Property Container` lub przynajmniej skąd mogę uzyskać informacje o tym wzorze **w Internecie**? Odkryłem, że istnieje jako jeden z wzorców `Podstawowych` w tym artykule. Niestety nie jest to opisane w odpowiednim artykule w języku angielskim. Jedyną rzeczą jest krótki opis w Wikipedii, który próbowałem w przybliżeniu przetłumaczyć poniżej: > Ten wzorzec pozwala dodać dodatkowe właściwości dla klasy w kontenerze > (wewnątrz klasy), zamiast rozszerzać klasę o nowe właściwości. Jeśli krótki przykład jest możliwy w PHP / C# / C++ lub Javie, byłby bardzo przydatny do zrozumienia. PS: Wygląda na to, że zostało to opisane w „SanFrancisco™ Design Patterns: Blueprints for Business Software”, ale nie mam do niego dostępu. Google nie pomaga lub szukam z niewłaściwymi słowami kluczowymi...


title: Jak podejść do formularza wielostronicowego za pomocą tylko jednej opcji zapisu

text: Zrzut ekranu pokazuje stronę przesyłania produktu Magento. Lewa nawigacja umożliwia przełączanie się na różne opcje produktu. Zasadniczo każda opcja w lewym panelu nawigacyjnym pojawia się jako inna strona. Jednak po zapisaniu i zamknięciu zostaną zapisane wszystkie aktualizacje dokonane na każdej stronie. Korzystanie z Foundation4, html, css, js - jakie byłoby najlepsze podejście do replikacji czegoś podobnego? Powiedz, że chcę 3 strony i jedną opcję przycisku zapisu. Korzystanie z http://foundation.zurb.com/docs/components/section.html#panel2 i posiadanie przycisków zapisu na górnym poziomie formularza wydaje się możliwą opcją. ![Zrzut ekranu Magento](http://i.stack.imgur.com/7BRce.jpg)


title: Problemy z Corba

text: Mam jutro semestr średni z inżynierii oprogramowania i kiedy przechodziłem poprzednie egzaminy, zobaczyłem to pytanie: Prawda czy fałsz z uzasadnieniem: Jednym z problemów z CORBA jest to, że systemy rozproszone stworzone przy jej użyciu muszą być napisane przy użyciu tego samego języka programowania. Nie pamiętam, żeby mój profesor mówił coś o CORBA na zajęciach, więc trudno mi odpowiedzieć na to pytanie, mimo że szukałem CORBA w Internecie, więc byłoby wspaniale, gdybyś pomógł mi zrozumieć pytanie. Z góry dziękuję


title: Jak Clang mógł wydać na licencji BSD?

text: Odkryłem, że llvm może generować tylko kod asemblera. Jeśli ktoś chce wygenerować i połączyć kod asemblera z natywnym kodem wykonywalnym, powinien użyć zewnętrznego narzędzia (np. GNU as/ld. Obecnie lld nie jest gotowy i nie ma więcej informacji o llvm-mc). Odpowiedź na to pytanie i inne odpowiedzi sugerują, że Clang używa Binutils (as i ld) do generowania i łączenia kodu natywnego (nie jestem tego do końca pewien). Jeśli tak, to w jaki sposób Clang mógłby wydać na licencji BSD? Nie mogę znaleźć żadnych wyjątków licencyjnych (takich jak Bison Exception) dotyczących ld lub as. Jeśli źle rozumiem niektóre pojęcia, proszę wybacz mi! BTW, czy moglibyśmy używać GNU as i ld w sposób programowy? **EDYTUJ:** Dzięki za te odpowiedzi. Wygląda na to, że clang nadal nie jest samodzielnym toolchainem i musi korzystać z narzędzi VS lub GNU. Czy to znaczy, że ktoś napisze kompilator oparty na llvm. Jeśli użytkownicy nie zainstalowali narzędzi GNU lub VS. Kompilator nie jest kompilatorem gotowym do użycia?


title: Czy programy do malowania również potrzebują bazy danych?

text: Myślałem o tym, jak działa oprogramowanie do malowania. Najpierw pomyślałem, że może nie używać żadnej bazy danych, ale kiedy zacząłem myśleć o funkcji undo, zdałem sobie sprawę, że może być tak, że dane są w jakiś sposób przechowywane w bazie danych. Czy ktoś może mi pomóc, mówiąc mi, jak obrazy są przechowywane w normalnym programie do malowania (powiedzmy MS-PAINT systemu Windows).


title: planowanie tej samej aplikacji na OSX i iOS

text: Chciałbym zapytać, jaka jest najlepsza strategia tworzenia aplikacji, która będzie rozwijana zarówno na Maca, jak i iPada, tak aby włożyć minimalny wysiłek w przeniesienie jej z jednej platformy na drugą, zaczynając na przykład od iPada, ale raczej próbując zrobić oba w tym samym czasie. W rzeczywistości aplikacja byłaby również w stylu iPada na Macu. Jak mam zaplanować projekt? Jakie są główne triki ułatwiające osiągnięcie celu?


title: Konieczność włączenia kalendarza i poczty e-mail do własnego systemu CRM. Którego?

text: Piszę aplikację internetową, która musi zawierać elementy CRM, ale nie mogę używać gotowego CRM do robienia tego, co chcę. (Szczerze przeszliśmy przez to wszystko i to nie zadziała). Teraz, podczas gdy Zadania, Połączenia, Spotkania i Notatki są proste, pomysł ponownego wymyślenia Poczty i Kalendarzy wydaje się stratą czasu i wysiłku, a także nieproduktywnym, ponieważ większość użytkowników ma już własne, a to po prostu zwiększa złożoność mojej aplikacji i odstrasza użytkowników. Moje myśli krążą wokół używania Outlooka i lub Gmaila/iCal i lub Mac Mail/iCal i lub Thunderbirda i importowania odpowiednich danych lub, jeśli to możliwe, integrowania ich z aplikacją. jakieś pomysły? Każdy, kto tego doświadczył, może wskazać mi kilka kierunków. Uwaga Nie szukam odpowiedzi jako zbyt złożonej, tylko kilka wskazówek i myśli. Dziękuję. p.s. Przyjrzeliśmy się Sugar CRM jako podstawie naszego projektu i warto czerpać z niej najlepsze praktyki, ale jak mówię, nie było to użyteczne ze względu na sposób, w jaki konstruujemy nasze oprogramowanie, a nie z winy Sugar.


title: Internacjonalizacja aplikacji innych niż angielski

text: Wiem, że jest wiele postów do internacjonalizacji, ale tego nie znalazłem podczas wyszukiwania. Mam aplikację internetową PHP, która jest obecnie dość duża. Jest aktywnie rozwijany od 4 lat i nie był budowany z myślą o internacjonalizacji. Tekst jest wszędzie - w czystym HTML, w zmiennych PHP, w echo, w DB... Teraz znam pojęcie gettexta i to właśnie zamierzam wykorzystać w projekcie internacjonalizacji aplikacji. Jednak aplikacja nie jest napisana po angielsku i oto moje pytanie: Czy powinienem najpierw przetłumaczyć wszystko na angielski podczas zawijania każdego ciągu w funkcji gettext(), czy mogę użyć mojego języka ojczystego jako bazy? PS również wszelkie szybkie sugestie (być może linki) dotyczące ułatwienia mi życia z całym projektem i18n będą mile widziane!


title: Potrzebujesz porady dotyczącej podejścia do aplikacji internetowej, która ładuje arkusz programu Excel, ale udostępnia tylko wykresy

text: Szukam sugestii dotyczących podejścia programu Visual Studio, które należy podjąć dla aplikacji sieci Web, która jest na etapie koncepcyjnym. Moje środowisko ma wiele narzędzi: * Windows Server 2008 R2 Standard 64bit * Visual Studio 2010 Professional Edition * Sharepoint 2010 Server Enterprise Edition * SQL Server 2008 R2 * Office 2010 Professional Wiem, że będę potrzebować tej aplikacji do pobierania danych z bazy danych ( lub usługa sieciowa - nie jestem pewien dokładnie w tym momencie). Dane muszą być dynamicznie umieszczane w skoroszycie programu Excel. Aplikacja będzie musiała mieć ładny interfejs użytkownika (standardowe kontrolki sieciowe - być może z efektami JavaScript). Wstążka i siatka arkusza programu Excel będą musiały być ukryte. Niektóre kontrolki internetowe spowodują renderowanie wykresów programu Excel. Myślę, że to brzmi jak Visual Studio Tools for Office (VSTO), aby wykorzystać .Net i ukryć program Excel. Czy możesz zaoferować sugestie dotyczące: jednego projektu aplikacji sieci Web ASP.Net jednego projektu biblioteki klas dla programu Excel lub być może jednego z kilku różnych typów projektów programu Excel 2010 (dodatek, szablon, dokument) Czy usługi programu Excel dla programu SharePoint byłyby przydatne (lub wymagane)? Czuję się trochę przytłoczony tak wieloma wyborami na tym wczesnym etapie konceptualizacji aplikacji. Czy możesz zaproponować jakieś pomysły na tego typu rzeczy? Ponadto jestem nieco bardziej doświadczony w C#, ale przeczytałem, że VB.Net jest lepszy do pracy z modelem obiektowym programu Excel. Jakie są ogólne porady dotyczące wyboru narzędzi i ogólnych kompromisów w podejściu?


title: Co nowego w asemblerze PL/I, DB2 i S/390?

text: Mam zbliżającą się rozmowę techniczną z byłym pracodawcą, która skupi się na PL/I, DB2 i ISPF. Praca będzie dotyczyć systemów, które sam zaprojektowałem i napisałem 20 lat temu. Kilka lat profesjonalnego programowania, które zrobiłem od tego czasu, było w całości językiem asemblera. Problem polega na tym, że nie programowałem zawodowo od 15 lat, a programowanie osobiste, które robiłem od tego czasu, było w innych „nowoczesnych” językach. Moje pytanie brzmi, czy w PL/I i DB2 są nowe funkcje, o których powinienem wiedzieć. (Przeglądając najnowsze „Zasady działania” zobaczyłem instrukcje maszynowe obsługujące ciągi w stylu C, których nie było w starożytności – super.)


title: Rozdzielanie połączonej tablicy szeregów arytmetycznych i geometrycznych

text: Biorąc pod uwagę tablicę dodatnich liczb całkowitych w porządku rosnącym. Rozdziel je na dwie serie, ciąg arytmetyczny i ciąg geometryczny. Dana tablica jest taka, że rozwiązanie istnieje. Suma liczb dwóch sekwencji musi być podaną tablicą. Obie serie mogą mieć wspólne elementy, tj. szeregi nie muszą być rozłączne. Stosunek szeregu geometrycznego może być ułamkowy. Przykład: Dana seria : 2,4,6,8,10,12,25 AP: 2,4,6,8,10,12 GP: 4,10,25 Próbowałem wziąć kilka przykładów, ale nie mogłem dojść do ogólnej drogi . Próbowałem nawet implementacji grafów, wprowadzając krawędzie, jeśli podążają za określoną sekwencją, ale nie mogą osiągnąć rozwiązania.


title: Przeciążenie funkcji? Tak lub nie

text: Opracowuję statyczny i silnie typizowany, skompilowany język i zastanawiam się, czy uwzględnić przeciążanie funkcji jako cechę języka. Zdałem sobie sprawę, że jestem trochę stronniczy, głównie z tła `C[++|#]`. Jakie są najbardziej przekonujące argumenty _za_ i _przeciw_, w tym przeciążanie funkcji w języku? * * * **EDYTUJ:** Czy nie ma nikogo, kto ma przeciwną opinię? Bertrand Meyer (twórca Eiffla w 1985/1986) nazywa metodę przeciążającą to: (źródło) > mechanizm próżności, który nie wnosi nic do semantycznej mocy języka O-O >, ale utrudnia czytelność i komplikuje zadanie wszystkim Teraz to są pewne ogólne uogólnienia , ale jest mądrym facetem, więc myślę, że można śmiało powiedzieć, że w razie potrzeby mógłby ich poprzeć. W rzeczywistości prawie przekonał Brada Abramsa (jeden z programistów CLSv1), że .NET nie powinien obsługiwać przeciążania metod. (źródło) To potężna rzecz. Czy ktoś może rzucić nieco światła na jego przemyślenia i czy jego punkt widzenia po 25 latach nadal jest uzasadniony?


title: Metodologia testu obciążenia

text: Obecnie piszę test obciążenia dla pamięci podręcznej, który powinien przetestować, jak pamięć podręczna zareaguje na uporczywe żądania. Kolega i ja mieliśmy różne opinie na temat tego, jak należy wykonać te testy obciążeniowe. Uważam, że test obciążenia powinien być jak najbardziej losowy. Powinna jak najlepiej modelować obciążenie w świecie rzeczywistym, a drogą do tego jest losowość. Stworzyłem więc ten losowy test w następujący sposób: * Dane testowe są przechowywane w arkuszach kalkulacyjnych i są ładowane do obiektów TestRunner podczas uruchamiania * Dane testowe są **nie** losowe * Test obciążenia uruchomi 10 losowych TestRunnerów w poszczególnych wątkach w w tym samym czasie * Obiekt zwrócony przez pamięć podręczną zostanie przetestowany, aby upewnić się, że jest sensowny, nie jest dokładnie testowany * Wszelkie testy, które nie powiodły się, zostaną wydrukowane na końcu, a każdy test ma unikalny identyfikator, aby łatwo znaleźć testy zakończone niepowodzeniem * Losowo odstępach czasu, pamięć podręczna zostanie wyczyszczona, aby w dowolnym momencie modelować rzeczywiste wymagania dotyczące czyszczenia pamięci podręcznej. * Test obciążenia będzie działał przez konfigurowalny czas Pomysł mojego kolegi na to, co powinien zrobić test obciążenia, jest następujący: * Dane testowe są przechowywane w arkuszach kalkulacyjnych i są ładowane do obiektów TestRunner podczas uruchamiania * Wszystkie obiekty TestRunner są uruchamiane w sposób sekwencyjny * Za każdym razem, gdy uruchamiany jest test obciążenia, uruchamia on obiekty TestRunner w tej samej kolejności. Która metodologia, Twoim zdaniem, zapewni najbardziej niezawodny test obciążenia? Osobiście uważam, że test losowy zapewni bardziej wiarygodny test obciążenia, ponieważ będzie modelował użycie w świecie rzeczywistym. Nie wiadomo, jakie zamówienia pojawią się po wydaniu tego do produkcji, dlatego należy to przetestować z uwzględnieniem tego nieznanego elementu. Jednak uruchomienie wszystkich testów za każdym razem w tej samej kolejności spowoduje, że wszelkie awarie będą odtwarzalne, co jest ważne podczas testowania.


title: 8yr+ programista .Net zainteresowany programowaniem gier - czy powinienem nauczyć się C++?

text: Piszę kod .Net od 2003 roku, więc teraz czuję się z tym bardzo dobrze i mam dość głęboką wiedzę na temat frameworka .Net, który budowałem przez lata, a także czuję się bardzo komfortowo z zaawansowanymi koncepcjami programowania i ogólnie programowaniem . Chcę zająć się programowaniem gier, ale ostatni C++, który napisałem, był na poziomie od początkującego do średniozaawansowanego około 2001-2002. Wiem, że obecnie jest dużo wsparcia dla tworzenia gier w językach .Net, ale wiem również, że istnieje wiele bibliotek gier, zasobów i produktów komercyjnych zbudowanych na lub wokół C i C++. Czy nauka C++ na tym etapie byłaby dla mnie praktycznym przedsięwzięciem, czy też ilość czasu wymagana do uzyskania kompetencji w C++ przeważy nad korzyścią, jaką uzyskałbym, pozostając przy .Net? Jednym z moich rozważań jest to, że obawiam się ogromnego i rosnącego wpływu, jaki Apple wywiera na świat technologii oraz ogólnego samozadowolenia, jakie Microsoft wydaje się mieć w dzisiejszym zdobywaniu wiedzy konsumenckiej i programistycznej, co sprawia, że zastanawiam się, czy mam się skupić moje wysiłki w zakresie technologii .Net (szczególnie biorąc pod uwagę fakt, że zespół Mono został niedawno zwolniony po przejęciu firmy Novell), czy prawdopodobnie poważnie ograniczam moją potencjalną przyszłą publiczność dla jakichkolwiek gier, które tworzę?


title: Powody oddzielnego źródła i wygenerowanych drzew

text: Jakie są powody umieszczania wygenerowanych plików w drzewie równoległym do drzew źródłowych? Na przykład w Eclipse zazwyczaj umieszczam źródła w `.../src` a pliki generowane przez kompilator w `.../classes`. _Mieszanie obu w jednym drzewie wydaje mi się brudne, jednak nie widzę żadnej przewagi w separacji_ : * Teoretycznie mógłbym łatwiej archiwizować źródła, ale to nieprawda. Używam git i ignorowanie wszystkich plików `*.class` wszędzie jest po prostu trywialne. Z innymi systemami kontroli wersji również powinno to być bardzo proste. * Teoretycznie pomaga szybciej znaleźć dany plik źródłowy, ponieważ drzewo nie jest zanieczyszczone przez pliki klas. Właściwie rzadko go potrzebuję (IDE oferuje znacznie szybsze sposoby). Do przeglądania klas używam widoku klasy, który abstrahuje ze struktury katalogów. * Teoretycznie mogą istnieć narzędzia, które tego wymagają, ale nie znam żadnego. Separacja ma dwie wady: * IDE kopiuje wszystkie pliki inne niż java („zasoby”) z drzewa źródłowego do wygenerowanego. Jeśli IDE nie zauważy zmienionego zasobu, oznacza to, że na ścieżce klas (tj. w wygenerowanym drzewie) znajduje się stara wersja i uruchomię program działający ze starą wersją... może to mnie sporo kosztować dużo czasu. * Kiedyś musiałem znaleźć plik klasy odpowiadający danemu plikowi java (lub odwrotnie), co zajmuje sporo czasu. _Więc jakie są prawdziwe zalety separacji?_ To pytanie nie dotyczy Javy (Eclipse). Jednak w Javie problem z nawigacją do drzewa równoległego jest potęgowany przez fakt, że drzewa są zwykle bardzo głębokie (ze względu na strukturę katalogów odzwierciedlającą strukturę pakietów oraz ze względu na światową konwencję nazewnictwa pakietów).


title: Podejście do uproszczenia algorytmu

text: Z całkowicie losowych powodów* napisałem kod, który oblicza i wyświetla następujące wyrażenie: > P=1*(2+2) _(3+3+3)_ (4+4+4+4) _.._ (n+n...… Co jest równoważne `(n!)^2` Wersja, którą napisałem (wymieniona poniżej linii) nie jest strasznie wydajna; szczególnie nie w sposobie obliczania iloczynu wewnętrznego. **Jak powinno Idę o uproszczenie algorytmu, aby działał szybciej i był łatwiejszy do zrozumienia?** I tak, wiem, że powinienem użyć czegoś innego niż „int” dla zmiennych.Ten aspekt mojego kodu nie jest tak interesujący, jak ponowne pracy w podejściu algorytmicznym.* W duchu pełnego ujawnienia, to nie na temat pytania zapoczątkowało moją pracę nad kodem * * * int sequence(int n) { int i, accum, prod, j; accum = 1; for (i = 2 .. n) { prod = i; for (j = 1 .. i-1) { prod += i; } accum *= prod; } return accum }


title: Projektowanie uniwersalnej klasy sterownika bazy danych

text: Mam framework homebrew MVC, którego używam od jakiegoś czasu i działa świetnie, ale planuję uaktualnienie do niego dla jego klas ORM. Do tej pory obsługuje tylko bazy danych SQL, tworząc instrukcje zależne od tego, jaka funkcja jest wywoływana. Klasa ORM obejmuje strukturę i walidację pól, pola obliczane, indeksy i połączone klasy (dla asocjacji, `1-1`, `1-*`, `*-1` i `*-*`), co zapewnia wystarczającą funkcjonalność do wybierania dowolnych danych i pobierania powiązanych wierszy w bazie danych. Ale chciałbym go rozszerzyć o obsługę baz danych XML, LDAP i NoSQL (np. MongoDB). Moim pomysłem na zaimplementowanie tego byłoby zmodyfikowanie funkcji w klasie ORM tak, aby współdziałały z niestandardowym sterownikiem (dla każdego typu bazy danych) we wspólnym formacie. Niestety, nie mam wystarczającego doświadczenia w używaniu tych innych formatów, aby odpowiednio zaprojektować klasę interfejsu, która mogłaby być używana przez ORM dla dowolnego typu. Czy są więc jakieś uniwersalne sterowniki baz danych, które obsługują wszystkie te typy baz danych, abym mógł uczyć się na przykładach? Obecny interfejs, przez który pracuję to: interface DBDriver { function connect($host, $un, $pw, $persist = false); funkcja odłączyć(); funkcja selectDB($db); zestaw znaków funkcji($zestaw znaków); funkcja insert($tabela, $wartości); funkcja select($tabela, $pola, $połączenia, $gdzie, $grupa, $posiadanie, $zamówienie, $limit); aktualizacja funkcji($tabela, $gdzie, $wartości, $gdzie, $zamówienie, $limit); funkcja delete($tabela, $gdzie, $zamówienie, $limit); funkcja transactionBegin(); funkcja TransactionCommit(); funkcja transactionRollback(); } Obawiam się jednak, że chociaż zapewni to wystarczająco dużo do tworzenia instrukcji SQL, może nie wystarczyć, a może nawet przesadzić w przypadku innych metod, takich jak XML lub NoSQL.


title: Przenoszenie skalowalności na wyższy poziom. Jakie metody mogą mi pomóc w upewnieniu się, że postępuję właściwie?

text: Wraz z innymi programistami PHP zaczynamy badać nową aplikację internetową, która naszym zdaniem (mamy nadzieję) będzie miała zasięg globalny. Kłopot polega na tym, że chociaż oboje uważamy się za zdolnych, martwi nas sam rozmiar potencjalnego ruchu (żadne z nas nie zrobiło niczego o zasięgu przekraczającym kilka tysięcy. Miejmy nadzieję, że ta strona będzie służyć milionom) i zastanawiamy się, co możemy zrobić po drodze, aby upewnić się, że przetestowaliśmy rzeczy pod kątem skali. Witryna będzie uzależniona od masowych jednoczesnych logowań, przesyłania stosunkowo dużych plików (dźwięk 3-10mb, obrazy >4mb), a także strumieniowego przesyłania dźwięku.


title: Synchronizacja danych w aplikacjach mobilnych - wiele urządzeń, wielu użytkowników

text: Zastanawiam się nad stworzeniem mojej pierwszej aplikacji mobilnej. Jedną z podstawowych funkcji aplikacji jest to, że wiele urządzeń/użytkowników będzie miało dostęp do tych samych danych – i wszyscy będą mieli prawa CRUD. Uważam, że architektura powinna obejmować centralny serwer, na którym przechowywane są wszystkie dane. Urządzenia będą wykorzystywać API do interakcji z serwerem w celu wykonywania jego operacji na danych (np. dodawania rekordu, edytowania rekordu, usuwania rekordu). Wyobrażam sobie scenariusz, w którym synchronizacja danych stanie się problemem. Załóżmy, że aplikacja powinna działać, gdy nie jest podłączona do Internetu, a zatem nie może komunikować się z tym serwerem centralnym. Tak więc: 1. Użytkownik A jest offline i edytuje rekord 100 2. Użytkownik B jest offline i edytuje rekord 100 3. Użytkownik C jest offline i usuwa rekord 100 4. Użytkownik C przechodzi do trybu online (przypuszczalnie rekord 100 powinien zostać usunięty na serwerze) 5. Użytkownik A i B przechodzą do trybu online, ale edytowane przez nich rekordy już nie istnieją. Mogą pojawić się różne scenariusze podobne do powyższych. **Jak to jest ogólnie obsługiwane?** Planuję użyć MySQL, ale zastanawiam się, czy nie jest to odpowiednie dla takiego problemu.


title: SQL Server: kiedy używać SSIS i T-SQL do zadań ETL

text: Kiedy powinienem używać jednego, a kiedy drugiego? Załóżmy na przykład, że mam 20 oddzielonych przecinkami, zdenormalizowanych plików tekstowych i chcę przekształcić dane i załadować je do znormalizowanych tabel SQL Server.


title: Zweryfikuj unikalność nowej treści

text: Pracuję nad witryną z recenzjami, w której występuje drobny problem z _prawie_ zduplikowanymi opiniami we wszystkich elementach. Zmieniono tylko kilka słów. Byłoby bardzo miło móc odkryć te duplikaty, zanim zostaną zatwierdzone przez moderatora, i mam nadzieję, że ktoś mógłby podpowiedzieć najlepszą strategię, aby się tam dostać. Witryna korzysta z Ruby on Rails na bazie danych Postgres i używa Thinking Sphinx do wyszukiwania (wszystko na Heroku), a jak dotąd najlepszą opcją, jaką widzę, jest wyciągnięcie wszystkich recenzji z bazy danych i użycie modułu takiego jak amatch do porównania sznurki. Niezbyt wydajny, więc w tym przypadku chyba będę musiał ograniczyć liczbę/wiek recenzji do skanowania w poszukiwaniu duplikatów. Czy ktoś ma lepszy pomysł?


title: Tożsamość i zmienność obiektu

text: Czytałem propozycję typów wartości w Javie i natknąłem się na zdanie: „Tożsamość obiektu służy tylko do obsługi zmienności, gdzie stan obiektu może zostać zmutowany, ale pozostaje tym samym wewnętrznym obiektem”. Z tego, co rozumiem na temat tożsamości obiektu (chociaż prawdopodobnie się mylę, w takim przypadku proszę mnie poprawić), jest to idea twojej zmiennej działającej jako wskaźnik lub odwołanie do obiektu znajdującego się w innym miejscu w pamięci (zwykle na stercie, a la Java i C#). Więc co to ma wspólnego ze zmiennością obiektów? Czy to oznacza, że na przykład obiekty na stosie w C++ są niezmienne? Mam problem z wyświetleniem linku tutaj.


title: Jaki jest najlepszy sposób korzystania z requestAnimationFrame i stałych szybkości klatek?

text: Ostatnio zacząłem często używać HTML5-`requestAnimationFrame`-API na stronach internetowych z dużą ilością animacji, zwłaszcza po obejrzeniu wykładu **Jank Busters**. Wydaje się, że w wielu przypadkach działa to całkiem nieźle i naprawdę poprawia wydajność. Jednak jedno pytanie wciąż pozostaje dla mnie: chcąc użyć animacji, która _NIE_ jest całkowicie obliczona (pomyśl na przykład o arkuszach sprite'ów), musisz dążyć do stałej liczby klatek na sekundę. Oczywiście można by ponownie użyć `setInterval`, ale być może istnieją inne sposoby rozwiązania tego problemu. Dwa sposoby, jakie przychodzą mi do głowy przy użyciu `requestAnimationFrame` ze stałą liczbą klatek na sekundę, to: var fps = 25; //klatki na sekundę function animate(){ //tutaj następuje rzeczywiste rysowanie setTimeout(function(){ requestAnimationFrame(animate); }, 1000 / fps) } animate(); lub var fps = 25; //klatki na sekundę var lastExecution = new Date().getTime(); function animate(){ var now = new Date().getTime(); if ((teraz - lastExecution) > (1000 / fps)){ //wykonaj faktyczne rysowanie lastExecution = new Date().getTime(); } requestAnimationFrame(animuj); } animacja(); Osobiście wybrałbym drugą opcję (pierwsza wydaje się być oszustwem), ale wydaje się, że w niektórych sytuacjach wydaje się bardziej **buggy**. Czy to podejście naprawdę jest tego warte (zwłaszcza przy niskiej liczbie klatek na sekundę, np. 12.5)? Czy jest coś do poprawienia? Czy istnieje inny sposób na rozwiązanie tego problemu?


title: Sqlite3 działa wolno w przypadku standardowych zapytań, czy można się tego spodziewać?

text: Korzystanie z Pythona i sqlite3. Wykonanie tej prostej pętli drukowania zajmuje kilka sekund. Niewiele wiem o bazach danych, więc zgaduję, że nie używam poprawnie tych zapytań. Z pewnością sqlite powinno działać szybciej? Cała baza danych ma około 5 tys. wierszy i tylko kilka kolumn, jeśli ma to znaczenie. con = lite.connect('gamelist.db') with con: cur = con.cursor() cur.execute("SELECT * FROM GameList GDZIE przetworzone IS NULL LIMIT 4") for i in range(0, 4): print cur.pobierz()


title: Czy kontrolki w formularzu powinny być przygotowywane w osobnej klasie?

text: Mam formularz z kilkoma kontrolkami. Każda kontrolka musi być zadeklarowana w klasie, sformatowana w konstruktorze (-rozmiar, lokalizacja, subskrypcja zdarzeń itp.), a jej procedury obsługi zdarzeń ponownie zadeklarowane w klasie. Robi się to trochę niezorganizowane, więc myślałem o refaktoryzacji tego. Dla każdej kontrolki: przygotowanie klasy, która wywodzi się z tego typu kontrolki (która będzie zawierać lokalizację, subskrypcję zdarzeń i obsługę zdarzeń itp.), a następnie użycie jej wystąpienia. Czy podczas tego będę miał jakieś kłopoty?


title: Pytanie o licencję MIT (pobierz czyjś kod i wrzuć go na github)

text: Czasami używam wtyczek i bibliotek innych firm, a jedną rzeczą, która doprowadza mnie do szału, jest to, że te biblioteki nie są wersjonowane. Więc jeśli go pobiorę, zrobię do niego mody, jestem jedyną osobą na świecie, która może z tego skorzystać… cóż, dopóki sam go nie wersjonuję. Moje pytanie jest proste: jeśli biblioteka, którą znajdę w Internecie, ma licencję MIT, czy naruszyłaby licencję, gdybym ją pobrał, zmodyfikował i umieścił na githubie? Nie staram się uchodzić za własną, po prostu próbuję pomóc społeczności czerpać korzyści z mojej pracy. Wiele bibliotek jest całkiem ładnych, ale z jakiegoś powodu nie są wersjonowane... Dzięki!


title: NSNotificationCenter a protokół

text: W projekcie używam `MPMoviePlayerController`. `loadState` obiektu `MPMoviePlayerController` jest obserwowany przy użyciu `NSNotificationCenter`. Dlaczego firma Apple wybrała „NSNotificationCenter” w tej sytuacji zamiast korzystać z delegowania?


title: Czy OOP spełnia obietnicę ponownego wykorzystania kodu? Jakie są alternatywy pozwalające na ponowne wykorzystanie kodu?

text: Być może największą obietnicą użycia paradygmatu obiektowego jest ponowne użycie kodu. Niektórzy kwestionują, że to zostało osiągnięte. Dlaczego to (nie) zostało osiągnięte? Czy ponowne użycie kodu zgodnie z definicją OOP sprawia, że projekty są bardziej produktywne? Lub bardziej zarządzalny? Lub łatwiejsze w utrzymaniu? Lub z wyższą jakością? Prawdopodobnie wszyscy zgadzamy się, że ponowne wykorzystanie kodu to dobra rzecz, ale istnieje kilka sposobów na osiągnięcie tego celu. Pytanie dotyczy metody ponownego wykorzystania kodu oferowanej przez OOP. Czy to była dobra rzecz? **Czy istnieją lepsze metody ponownego wykorzystania kodu** niż orientacja obiektowa, podklasy, polimorfizm itp.? Jakie sposoby są lepsze? **Czemu**? Opowiedz nam o swoich doświadczeniach z ponownym wykorzystaniem OOP lub innymi paradygmatami.


title: Przesyłanie życiorysu w celu zwiększenia ofert na projekty poboczne podczas zatrudnienia

text: Przyjaciel licytuje projekt informatyczny i musi dołączyć moje CV do swojej odpowiedzi na ofertę; Jestem „Ekspertem w zakresie tematyki”. Będę mu pomagał poza normalnymi godzinami pracy. Jak ludzie z branży IT radzą sobie z przesyłaniem życiorysów? Przede wszystkim nie chcę włączać (ani wykluczać) niczego, co wprowadzałoby w błąd lub byłoby nieprawdziwe, ale obawiam się, że w mojej dziedzinie ludzie się znają i nie chcę, aby mój obecny pracodawca dowiedział się, że złożyłem CV z inną firmą, zwłaszcza gdy nie jestem pracownikiem firmy mojego przyjaciela. Podsumowując, chcę uniknąć niezręczności, jaką mój pracodawca dowiaduje się (i co gorsza, co może prowadzić), ale zrównoważyć to z pomocą przyjacielowi. Więc moje pytanie brzmi, co powinienem pominąć lub zachować? Co jest właściwe? Dziękuję!


title: Co programiści robili przed zakresem zmiennych, gdzie wszystko jest globalne?

text: Tak więc mam do czynienia z pozornie archaicznym językiem (zwanym PowerOn), w którym mam główną metodę, kilka typów danych do definiowania zmiennych i mam możliwość posiadania pod-procedur (zasadniczo void metod), które nie zwracają typu ani nie akceptuje żadnych argumentów. **Problem polega na tym, że WSZYSTKO jest globalne.** Czytałem o tego typu językach, ale większość książek przyjmuje podejście _„Ok, używamy konia i karetki, ale teraz jest samochód, więc chodźmy naucz się nad tym pracować!" NIGDY nie przeżyjemy tych dni ponownie”_. Muszę przyznać, że umysł zmaga się z myśleniem _poza zakresem i zasięgiem_. Cóż, oto jestem. Próbuję dowiedzieć się, jak najlepiej zarządzać tylko zmiennymi globalnymi w ramach kilku _otwartych_ metod. Tak, nawet iteratory dla pętli `for` muszą być zdefiniowane globalnie, które sam przetwarzam w różnych częściach mojego kodu.Moje pytanie: dla tych, którzy mają tego typu doświadczenie, **jak programiści radzili sobie z dużą ilością zmiennych na globalnym boisku?** Czuję, że stało się to tylko mentalną sztuczką żonglowania, ale chciałbym wiedzieć, czy istnieją jakieś znane podejścia.


title: Prawidłowy komentarz do umieszczenia dla argumentów funkcji logicznych, które są „fałszywe”?

text: Z niektórych projektów open source zebrałem następujący styl kodowania void someFunction(bool zapomnieć); void naszaFunkcja() { jakasFunkcja(false /* zapomnij */); } Zawsze mam wątpliwości, co oznacza tutaj `false`. Czy oznacza „zapomnij”, czy „zapomnij” odnosi się do odpowiadającego mu parametru (jak w powyższym przypadku), a „fałsz” ma to zanegować? Jaki styl jest używany najczęściej i jaki jest najlepszy sposób (lub niektóre z lepszych sposobów) na uniknięcie niejednoznaczności?


title: Zarządzanie setTimeouts i setInterval w środowisku rozproszonym

text: Buduję turową grę na nodejs używając socket.io i redis jako datastore. Planuję hostować grę na AWS opsworks z możliwością skalowania poprzez dodawanie kolejnych węzłów. Jak powinienem ustrukturyzować aplikację, aby uzyskać zachowanie podobne do „setTimeout” do poprawnego działania w przypadku, gdy węzeł, który wyzwolił „setTimeout” z jakiegoś powodu, zostanie wyłączony? Moim początkowym planem jest, aby każdy setTimeout był przechowywany w redis w posortowanym zestawie, z wynikiem zdarzenia jako uniksowym znacznikiem czasu, w którym powinien zostać wykonany. Widzę 2 główne problemy z tym podejściem, z którymi nie jestem pewien, jak sobie poradzić : 1. Czas węzła, który odczytuje zdarzenie, niekoniecznie musi być zsynchronizowany z czasem węzła, który je przechowywał, co powoduje, że zdarzenia są uruchamiane wcześniej lub później niż powinny. Nie jestem pewien, jak duży może to być problem, ponieważ szybkie googlowanie pokazuje, że w najgorszym przypadku dryf będzie minimalny, ale brakuje mi praktycznego doświadczenia, aby wydać osąd w tej sprawie. 2. Nie ma możliwości, aby żaden z węzłów roboczych wiedział, że może być zadanie do wykonania, więc musiałby co sekundę odpytywać redis, aby sprawdzić, czy jest zadanie, które może obsłużyć. Idealnym rozwiązaniem byłoby publikowanie/subskrybowanie, które ma wbudowane opóźnienie, ale to również nie wydaje się proste do wdrożenia. Wszelkie porady, jak rozwiązać ten problem, są mile widziane!


title: Proces decyzyjny w zespole Scrum

text: Dwa pytania: 1. Zakładam, że kiedy trenerzy Scrum mówią „zespół powinien decydować”, mają na myśli, że musi być proces decyzyjny oparty na konsensusie, który zwykle ułatwia Scrum Master? 2. Co się stanie, jeśli między członkami zespołu Scrumowego dojdzie do nieporozumienia co do sposobu opracowania/projektowania jakiejś funkcji i nie można osiągnąć konsensusu, kto decyduje? Mistrz Scrum? Architekt systemu? Kierownik funkcjonalny? Dziękuję.


title: Jaki jest dobry sposób na upewnienie się, że dane serializowane lokalnie można zdeserializować w nowszym kodzie?

text: Kontekst: Pracuję nad grą HTML 5 bez stanu trwałego. Za każdym razem, gdy odświeżasz stronę, zaczynasz od początku. Ludzie proszą, aby mogli zacząć od miejsca, w którym skończyli, jeśli opuszczą stronę. Planuję wdrożyć to jako pamięć lokalną. To, co budzi obawy, to nowy rodzaj błędu, który będę musiał wziąć pod uwagę: jeśli wrócisz i pojawi się nowszy kod, może nie być w stanie zdeserializować pamięci. Na przykład stan po serializacji mógł wyglądać tak: { foo: "bar" } Ale kiedy gracz spróbuje gry w przyszłym miesiącu, to pole już nie istnieje i zostało podzielone na dwa pola z całkowicie inny rodzaj. To na pewno się stanie i myślę, że wiem, jak to naprawić: umieszczę numer wersji w danych, a kiedy wydam wersję y aplikacji, będę musiał napisać kod, aby przeprowadzić migrację ze stanu wersji x do stanu wersji y. Jeśli wydam wersję z aplikacji, będę musiał napisać kod do migracji z wersji y do wersji z. Nazwę tę logikę prawdopodobnie po deserializacji. Ale nie o to chodzi w tym pytaniu (chociaż jeśli jest jakiś błąd w moim podejściu, chciałbym to usłyszeć). Chcę wiedzieć: **Jak zautomatyzować coś (być może test), który mówi mi _kiedy_ muszę napisać skrypt migracji i _kiedy_ muszę zmienić numer wersji danych?** Czuję, że automatyzacja jest tutaj kluczem , ponieważ wszystko pójdzie bardzo źle, jeśli popełnię błąd, a pamiętanie o zmianie numeru wersji / napisaniu skryptu migracji będzie ostatnią rzeczą, o której myślę, gdy właśnie skończę tę nowinkę, którą chcę, aby inni zobaczyli. * * * Ciekawa (ale może nieistotna) realizacja: Wszystkie te problemy znikną, jeśli dane na _my_ server przechowuję w bazie danych ze schematem. Dzięki temu mam pewność, że wszystkie dane są we właściwym stanie (jeśli mój schemat jest dobry). Problem z utrzymywaniem się lokalnie polega na tym, że tracę kontrolę nad danymi i _kiedy_ są one migrowane. * * * To pytanie jest podobne, ale różni się od tego. Różnica polega na tym, że jestem zainteresowany głównie automatyzacją, a on/ona nie i używamy różnych języków (widząc, że akceptowaną odpowiedzią jest biblioteka Java, co czyni ją nieistotną dla mnie).


title: Procesory Intel Nehalem/SB/IB/Haswell, pamięć podręczna a TLB

text: W przypadku procesorów Intel z architekturą Nehalem+, jaka jest interakcja między pamięcią podręczną L1, pamięcią podręczną L2, L1 DTLB i L2 DTLB? Na wszystkich znalezionych obrazach nie ma jasnego wyjaśnienia, czy procesor najpierw sprawdza L1 DTLB, a następnie przechodzi do pamięci podręcznej L1D, czy też trafia do pamięci podręcznej L1 DTLB tylko w przypadku braku pamięci podręcznej w L1D lub Pamięć podręczna L2?


title: Czy istnieją języki, które ułatwiają wdrażanie wzorców projektowych?

text: Często nie jest oczywiste, jak zaimplementować dany wzorzec projektowy w języku. Czasami jest to trudne lub uciążliwe. Czy istnieją języki, które sprawiają, że korzystanie z wzorców projektowych jest łatwe i efektywne?


title: Modele mentalne lub rzeczywiste metafory programowania funkcjonalnego

text: Czy ktoś ma dobry model mentalny lub metaforę programowania funkcjonalnego, która odwołuje się do czegoś w prawdziwym świecie? Programowanie obiektowe intuicyjnie ma dla mnie sens. Są rzeczy, które mają właściwości, a czasami potrafią też coś zrobić lub wykonać obliczenia na swoich właściwościach (metodach). (np. samochód, kształt, kot). Programowania funkcjonalnego nie znoszę w żaden sposób i nie interesuje mnie debata o zaletach tych dwóch. Potrzebuję tylko metafory lub modelu mentalnego do pracy, tak jak w przypadku programowania zorientowanego obiektowo. Jakie są dobre modele mentalne lub metafory świata rzeczywistego do programowania w paradygmacie funkcjonalnym? Jest coś w funkcjach składających się z funkcji przetwarzających funkcje, które pozostawiają kogoś bez mocnego miejsca do stania i przemyślenia.


title: Jak wesprzeć zespół sprzedaży i uniknąć problemu „Często zespół sprzedaży wpędza nas w kłopoty tylko po to, by otrzymać prowizję”?

text: W odniesieniu do tej odpowiedzi: > Na koniec dnia dostarczamy produkt do płacącego klienta. > Ten klient ma potrzeby i oczekiwania, realistyczne lub nie. Często zespół sprzedaży > wpędza nas w kłopoty tylko po to, by otrzymać prowizję. Zdaję sobie sprawę, że istnieją procesy (głównie związane z komunikacją i zarządzaniem projektami), które mogą pomóc zminimalizować ryzyko (wydaje się, że mają one minimalny wpływ, głównie ze względu na ignorowanie ich przez kogokolwiek innego niż deweloperów) i uważam, że procent problemu stanowi całkowity brak technicznych zrozumienie, a nie chciwość (chociaż to odgrywa pewną rolę). Ale kiedy nie można pozbyć się prowizji (bardzo dobry artykuł), zdobyć (wyszkolić) lepszych sprzedawców lub zwiększyć zasoby deweloperskie, jak można zminimalizować wpływ na morale deweloperów, terminy i ogólnie ponoszenie odpowiedzialności działu rozwoju? Jak powszechne jest to szkodliwe dla biznesu (i nikt na wyższym szczeblu nie uwierzy, o ile lepiej może być - teraz nie widzą żadnego problemu, ale zastanawiają się, dlaczego sprzedaż spada, a klienci nie są zadowoleni) i jak inni łagodzą ryzyko, udowodnić, że rozwój nie jest problemem i radzić sobie z sytuacjami, w których marketing jest zbyt agresywny, a nadmierna sprzedaż jest normalna (co wszystko propaguje od góry)? Jak możesz wesprzeć zespół sprzedaży i wyższe kierownictwo, aby poprawić podstawową przyczynę tej sytuacji i jakie zmiany można wprowadzić w dziale deweloperów, aby w tym pomóc? Dodatkowe informacje: jest to jedyny produkt, który tworzymy i jako taki jest sprzedawany z dodatkową funkcjonalnością zgodnie z wymaganiami lub pracuje nad integracją z istniejącymi systemami. Martwiłem się o bliskie głosy, ale to jest bardzo realny problem (i starałem się sformułować to obiektywnie) - jeśli możesz skomentować, jak poprawić to pytanie, daj mi znać.


title: Jak uniknąć zbyt dużej ilości html w JQuery?

text: Nie podoba mi się, jak mój JQuery jest po wykonaniu niektórych dynamicznych przycisków lub innych dynamicznych rzeczy. Na przykład, gdy mam zaznaczone pola wyboru, dodaję przycisk o nazwie „Pobierz wybrane” i „Usuń zaznaczone”. Oczywiście na mojej stronie jest wiele innych rzeczy związanych z JQuery + HTML. Chciałbym wiedzieć, jak mogę ulepszyć mój kod, a nie wyglądać spaghetti. Wielkie dzięki! $(document).on('change', '.docListCheckbox', function(event){ if( $('#resultsContainer').find('.docListCheckbox:checked').length > 0 ) { if( ! $ ('#download-sel').length > 0 ) { var downSelectionBtn = '<button id="download-sel" class="button-small button-blue" type="button">DESCARGAR MARCADOS</button>' var delSelectionBtn = '<button id="delete-sel" class="button-small button-red" type="button">ELIMINAR MARCADOS</button>'; $('#selection-controls').append( downSelectionBtn); <?php if( SwHelper::checkAccess('Docusearch.Documento.Eliminar') ): ?> $('#selection-controls').append(delSelectionBtn); <?php endif; ?> } } else { if( $('#download-sel').length > 0 ) { $('#download-sel').remove();<?php if( SwHelper::checkAccess('Docusearch.Documento.Eliminar') ): ?> $('#usuń-sel').remove(); <?php endif; ?> } } }); $(document).on('click', '#docActionEdit', function() { var button = $(this); var isToggled = button.data('toggled'); $('#docDataEditor').slideToggle( { czas trwania: 1000, easing: 'easeOutBounce', start: function(){ if(isToggled == 'false') { button.html('EDITAR'); button.data('toggled', 'true'); $ ('#docActionSave').remove(); } else { button.html('ANULUJ'); button.data('toggled', 'false'); $('#docAvailableActions').prepend('<identyfikator przycisku ="docActionSave" class="button-small button-green">GUARDAR</button>'); } } }); });


title: Dlaczego format json jest niezbędny w stosunku do normalnego formatu obiektu javascript?

text: Zanim odpowiesz, tak, wiem, że inne języki nie mają natywnej obsługi obiektów javascript, ale nie mają też natywnej obsługi json. Czy nie byłoby więc o wiele bardziej sensowne modyfikowanie specyfikacji json, aby zezwalać na identyfikatory bez „” i zezwalać na komentarze? Bardzo rozsądne rzeczy, ponieważ nie musisz serializować/deserializować podczas pracy w javascript, nie?


title: Jak rygorystycznie należy podchodzić do wcięć/białych znaków?

text: Nasz proces rozwoju wygląda następująco: zakoduj zadanie -> ktoś inny kod i dokumentacja QA -> zadanie jest włączone do trunka. Ostatnio kolega odmawia przekazania kodu QA z powodu problemów z wcięciami i białymi znakami. Oto przykłady tych problemów (składnia to SAS): Dodatkowe białe znaki: %if &syserr gt 0 %then %goto err; /*ostatnia linia kodu*/ /* Obszar stopki*/ Dodatkowa linia odstępu, bez wcięcia wewnątrz proc sort: /* End Of header * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ proc sort data = %dataset ; według identyfikatora; biegać; %if &syserr gt 0 %to %goto err; proc sort data = &second_dataset.; według identyfikatora; biegać; %if &syserr gt 0 %to %goto err; Dodatkowe odstępy między krokami: /*dołącz wszystkie szczegóły dla każdego rekordu*/ proc sort data = &data out = data_srt ; według &warunków; biegać; %if &syserr gt 0 %to %goto err; proc sortuj dane = &data2.; według &warunków.; biegać; %if &syserr gt 0 %to %goto err; /*złączenie kartezjańskie*/ data new_data; połącz dane &dane2. ; według &warunków; biegać; Pytanie brzmi, czy bycie dobrym programistą polega na tym, że przeglądanie kodu i poprawianie tego rodzaju rzeczy jest słuszne, czy może to po prostu śmieszne? Dodatkową komplikacją jest to, że ponieważ nie mamy ciągłej integracji ani automatycznych testów, nie jest możliwe, aby QAer szybko naprawił te problemy i zatwierdził kod, ze względu na ryzyko przypadkowego usunięcia średnika lub czegoś. (Szczerze mówiąc, ryzyko dotyczy początkowego programisty wprowadzającego te zmiany, więc tak czy inaczej, jeśli ten błąd wystąpi, wystarczy go naprawić i przejść dalej).


title: dlaczego c++11 definiuje domknięcie jako proces przechwytywania zmiennych

text: przy użyciu domknięcia w innych językach po prostu czuje się naturę, zmienne z zakresu zewnętrznego są przechwytywane automatycznie, bez konieczności deklarowania takich przechwyceń. w c++11 dobrze widzieć, że mamy domknięcia, ale dlaczego praca z nimi jest tak niewygodna, nie tylko deklarowanie przechwytywania, ale także odczytywanie kontrolek zapisu? mało prawdopodobne względy implementacyjne, ale jaka filozofia prowadzi do tej niezręcznej specyfikacji?


title: Strony internetowe w diagramach sekwencji UML?

text: W moim obecnym projekcie toczymy dyskusję na temat tego, czy dobrym pomysłem jest uwzględnienie artefaktu reprezentującego stronę internetową w diagramie sekwencji UML dla aplikacji internetowej, wyraźnie określając, która strona rozpoczyna interakcję biznesową. Myślę, że dołączanie strony internetowej to zły pomysł, dla mnie diagram sekwencji powinien dotyczyć logiki biznesowej i interakcji między obiektami biznesowymi, a nie uwzględniać problemów związanych z prezentacją, takich jak strony internetowe. Gdybym miał dołączyć stronę internetową, byłaby to w diagramie nawigacyjnym. Ponadto, z mojego doświadczenia, do tej pory nie widziałem stron internetowych zawartych w diagramach sekwencji. Jakie są zalecenia/najlepsze praktyki w tym zakresie? Czy powinniśmy dołączyć artefakt reprezentujący stronę internetową do każdego z naszych diagramów sekwencji, czy nie? **EDYTUJ :** Idealnie byłoby, gdyby odpowiedzi cytowały wytyczne dotyczące projektowania/modelowania, książki o UML itp. przemawiając za lub przeciw umieszczaniu artefaktów prezentacji w diagramach projektowych UML. Jak dotąd nie znalazłem autorytatywnego źródła, które mógłbym zacytować na ten temat, zamiast osobistych opinii.


title: Czy są jakieś wady lub problemy z Haskellem?

text: Zastanawiam się, jak zagłębić się w Haskell dla mojego następnego (stosunkowo trywialnego) osobistego projektu. Powody, dla których zmagam się z Haskellem, to: 1. Wprawę w język czysto funkcjonalny 2. Szybkość. Chociaż jestem pewien, że można się z tym spierać, profilowanie, że widziałem Haskella blisko C++ (i wydaje się, że jest trochę szybszy niż Erlang). 3. Prędkość. Serwer sieciowy Warp wydaje się być szalenie szybki w porównaniu z praktycznie wszystkim innym. Biorąc to pod uwagę, szukam wad i problemów, które pojawiają się wraz z Haskellem. W sieci jest mnóstwo informacji o tym, dlaczego Haskell jest Dobrą Rzeczą, ale nie znalazłem wielu tematów na temat jego brzydkiej strony (poza narzekaniami na jego składnię, na których w ogóle mi nie zależy). Przykładem tego, czego szukam, może być GIL Pythona. Coś, co nie pojawiło się, dopóki naprawdę nie zacząłem przyglądać się używaniu współbieżności w środowisku CPython.


title: Nierównomiernie rozłożone generowanie liczb losowych

text: Powiedzmy, że muszę wygenerować losową liczbę od 1 do 100, jednak prawdopodobieństwo każdej liczby nie wynosi 1/100, ale jest to predefiniowane prawdopodobieństwo. Jak wygenerować ten numer? Używam Rubiego/Pythona.


title: Budowanie obszaru roboczego za pomocą Ojdeploy na linux

text: Mam aplikację java utworzoną przy użyciu Jdevelopera. Chcę zbudować obszar roboczy na maszynie z systemem Linux przy użyciu ojdeploy zamiast Jdeveloper IDE. Ale do tego muszę dodać słoiki innych firm, takie jak hibernacja. Używam kitu, aby uzyskać dostęp do maszyny. więc chcę wiedzieć, jak dodawać biblioteki innych firm bez użycia IDE. Dziękuję


title: Jak obsługiwać dane wyszukiwania w aplikacji C# ASP.Net MVC4?

text: Piszę aplikację MVC4 do śledzenia dokumentów, które przechowujemy dla naszych klientów. Najpierw używam kodu i stworzyłem modele dla moich obiektów (firma, dokument itp.). Mam teraz do czynienia z tematem wygaśnięcia dokumentów. Logika biznesowa podpowiada, że niektóre dokumenty wygasną po określonej liczbie dni po dacie dokumentu. Na przykład dokument A może wygasnąć za 180 dni, dokument 2 za 365 dni itd. Mam klasę dla moich dokumentów, jak pokazano poniżej (uproszczona dla tego przykładu). Jaki jest dla mnie najlepszy sposób na utworzenie wyszukiwania wartości wygaśnięcia? Chcę określić, że dokumenty typu DokumentA wygasają za 30 dni, typu DokumentB wygasają za 75 dni, itd... Mam na to kilka sposobów: moja klasa (DaysValidFor), która ma niestandardowy pobieracz, który zwraca różne wartości w oparciu o DocumentType 3. Metoda, która pobiera typ dokumentu i zwraca liczbę dni i jestem pewien, że istnieją inne sposoby, o których nawet nie myślę . Moją główną troską jest a) nie naruszanie żadnych najlepszych praktyk oraz b) łatwość utrzymania. Czy są jakieś plusy/minusy, o których muszę pamiętać w przypadku powyższych opcji, czy jest to przypadek „wybierz jedną i korzystaj z niej”? Ostatnia myśl, w tej chwili liczba dni jest wartością, która nie musi być przechowywana nigdzie na podstawie dokumentu — jednak jest możliwe, że logika biznesowa to zmieni (tj. domyślnie data ważności dokumentu A wynosi 30 dni , ale ten dokument A powiązany z firmą XYZ będzie trwał 60 dni, ponieważ nam się podoba). W takim przypadku, czy właściwość w klasie Document jest najlepszym sposobem, ponieważ muszę dodać to pole do bazy danych? przestrzeń nazw Modele { // Typy dokumentów do śledzenia public enum TypDokumentu { DokumentA, DokumentB, DokumentC // itd... } // Model dokumentu public class Dokument { public int IDDokumentu { get; ustawić; } // Klucz obcy do firm public int CompanyID { get; ustawić; } public DocumentType DocumentType { get; ustawić; } // Pomocnik do przetłumaczenia wartości enum na liczbę całkowitą do przechowywania bazy danych [Column("DocumentType")] public int DocumentTypeInt { get { return (int)this.DocumentType; } set { this.DocumentType = (DocumentType)value; } } [DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:MM-dd-rrrr}", ApplyFormatInEditMode = true)] public DateTime DocumentDate { get; ustawić; } // Właściwości nawigacji public virtual Firma Firma { get; ustawić; } } }


title: Dystrybucja oprogramowania PC bez strony internetowej

text: Próbuję rozpowszechniać mały program na PC, ale napotkałem kilka problemów. Najpierw próbowałem wgrać go do cNet, a potem do softonic, ale problem z tymi stronami i wszystko, co widziałem, polega na tym, że wymagają bezpośredniego linku (czego nie mogę uzyskać, patrz poniżej). Po tym, jak napotkałem ten problem, po prostu przesłałem swoje oprogramowanie do witryny do udostępniania plików, ale w rzeczywistości bardzo niewielu moich obecnych użytkowników (z wersji mobilnej) zainstalowało moje oprogramowanie, ponieważ po pobraniu zostało wymienione jako niebezpieczne przez program antywirusowy z powodu witryna, z której został pobrany. Więc zacząłem szukać strony do pobrania, która dałaby mi bezpośredni link, ale nic dziwnego, że nie mogę tego znaleźć. Nie mogę sam hostować pliku, ponieważ nie mam strony internetowej. Mimo że nie znalazłem żadnego, byłbym w porządku z witryną hostującą moje oprogramowanie i nie wymagającą bezpośredniego linku do pobrania. Lub byłbym w porządku z witryną, która dawałaby mi bezpośredni link do pobrania. Interesuje mnie odpowiedź na ogólny problem - dystrybucja oprogramowania bez strony internetowej. Zakładam, że nie każdy, kto kiedykolwiek wydał oprogramowanie, ma własną stronę internetową, jaki jest najlepszy sposób na obejście tego?


title: Jak przejść od „tu jest zip” do dobrej strategii wydawniczej?

text: Potrafię pisać kod, rozwiązywać zależności i uruchamiać program na _moim_ komputerze; Nie mam jednak pojęcia, dokąd mam się udać. Jak przygotować oprogramowanie do dystrybucji? Środowisko szkolne nauczyło mnie, jak wykonać kilka losowych testów ręcznie, upewnić się, że nic nie jest zepsute, a następnie wrzucić wszystkie pliki źródłowe do archiwum i wysłać. To wszystko, co jest potrzebne do uzyskania dobrej oceny, to większość kursów CS. Nikt nie nauczył mnie, jak udostępniać prawdziwym użytkownikom. Jedyne wskazówki, jakie mam, to kilka fraz, takich jak „zautomatyzowane kompilacje” i „ciągła integracja”, ale nie wiem, co to znaczy. Jak mogę prawidłowo rozpowszechniać moją pracę? Jak mogę ułatwić innym? Jak mogę wyjść poza wydania „tu jest zip”?


title: Heurystyka konsekwentnego porządkowania punktów w płaszczyźnie

text: Mam prostokątne regiony na płaszczyźnie. Chcę konsekwentnie je porządkować w sposób przyjazny dla człowieka, na który typowy sort y-x się nie sprawdzi. Zasadniczo chcę (0,0), (1,0) i (0,1) sortować tak samo jak (0,0), (1, -0,1) i (-0,1, 1). Pomysły? * * * _Z komentarzy:_ * Oczywiste odpowiedzi, sortowanie y-x i x-y, skutkują różnymi kolejnościami krótkiego przykładu, który zamieściłem. Rzeczy, które teraz wymyślę, to metody grupowania, w których grupuję wartości y, sortuję według średniej y, a następnie według x. > Pytanie: Po co sortujesz swoje prostokąty? Badawczy? Wyświetlasz? * Numerując regiony, chcę, żeby dwa zestawy regionów, które człowiek powiedział, że są prawie identyczne, zostały ponumerowane identycznie. > Pytanie: Czy orientacja prostokątów jest naprawdę ważna (jaka jest > różnica między (0,1) a (-1,0) w dziedzinie problemowej)? Czy przede wszystkim sortowanie według obszaru lub przekątnej byłoby w porządku? * Nie potrafię określić ich orientacji poza pionową lub poziomą, a rozmiar nie działa, ponieważ wiele może być praktycznie takich samych.


title: Alternatywa OAuth dla systemu 2 stron

text: Piszę usługę RESTful (Java EE, Jersey) i aplikację kliencką, która się z nią komunikuje, i chcę ją zabezpieczyć i przechowywać wszelkie dedykowane nazwy użytkownika i hasła w mojej własnej bazie danych. Nie chcę, aby klient przechowywał nazwę użytkownika i hasło lokalnie, nie w żadnej formie takiej jak base-64 lub inne kodowanie w ogóle, raczej mam coś w rodzaju systemu autoryzacji OAuth2, gdzie aplikacja kliencka przechowuje tylko tokeny odświeżania i dostępu po zalogowaniu się właściciela zasobu, ale nie muszę zapewniać dostępu do usług innych firm. Zabezpieczenie mojej usługi za pomocą uwierzytelniania podstawowego oznacza, że aplikacja kliencka musi przechowywać hasło i wysyłać je dla każdego przyszłego żądania, więc nie tego potrzebuję. Zdaję sobie sprawę, że OAuth jest przeznaczony do różnych sytuacji, w których zaangażowane są więcej niż tylko 2 strony (patrz inne pytanie). jak wspomniano tutaj https://blog.apigee.com/detail/when_to_use_oauth: `OAuth to jedyny realistyczny wybór dla aplikacji internetowej, która sama korzysta z interfejsu API innej aplikacji internetowej w imieniu użytkownika. Rozważmy na przykład aplikację internetową, która integruje się z Twitterem. (Być może jest to aplikacja do geolokalizacji, taka jak Foursquare, która oferuje możliwość tweetowania, gdzie jesteś i co robisz).` Więc jaka jest właściwa ustandaryzowana metoda zabezpieczenia mojej usługi RESTful, jeśli nie chcę ponownie wymyślać koła i utworzyć własną metodę uwierzytelniania, a jeśli „Podstawowa” nie jest tym, czego potrzebuję, ponieważ zmusza mnie do przechowywania poświadczeń lokalnie na kliencie, a OAuth jest prawdopodobnie przesadą, ponieważ ma charakter dostępu stron trzecich. PS – Chciałbym zapewnić użytkownikom możliwość logowania się do mojego serwisu za pomocą Facebooka lub open-id, ale to chyba inna historia.


title: Czy RSI kwalifikuje się do niepełnosprawności? Czy zabijasz swoją karierę, jeśli to robisz?

text: Moje RSI stało się teraz całkiem złe. Nadal chodzę do szkoły i myślałem o staraniu się o stypendium z tytułu niepełnosprawności. Czy to zły pomysł z punktu widzenia postrzegania go jako niezdolnego do wykonywania pracy po ukończeniu studiów? Czy ludzie zobaczą „och, masz RSI… i aplikację o stałej niepełnosprawności… Nie chcę zatrudniać tej kupki”. studenci z trwałą niepełnosprawnością Wiem, że można wyzdrowieć, ale faktem jest, że jeśli jesteś programistą, będziesz z tym walczył przez całe życie.


title: Czy warto wypróbować moje doświadczenie IT w zupełnie innej domenie?

text: Mam teraz spore doświadczenie (kilkanaście) przede wszystkim jako dba,deweloper, administrator BI, analityk danych. Karierę zaczynałem w kilku startupach, a teraz w dużej firmie internetowej. Kultura zawsze była ciekawa, dynamiczna i po prostu ciągle w ruchu. Niedawno członek mojej rodziny zapytał, czy byłbym zainteresowany zabraniem mojego doświadczenia do jego firmy (znanej na rynku Oil & Gas). Tam jest miejsce na stanowisko programisty bazodanowego. Kierownik ds. rekrutacji polubił moje kwalifikacje i poprosił mnie o przybycie na rozmowę kwalifikacyjną. Nie mając doświadczenia w tej dziedzinie, intrygująca wydaje się możliwość pracy z danymi w tej dziedzinie. Wygląda na to, że kultura jest znacznie wolniejsza, ale jest stabilność. Ludzi, którzy pracowali tam od lat. Jest to przede wszystkim sklep z systemem Windows wykorzystujący .NET, Sybase, serwer SQL. Prawie całe moje doświadczenie dotyczy platform unix/linux z Oracle, mySQL, narzędziami open source. Biorąc pod uwagę moje dotychczasowe doświadczenia, czy byłaby to okazja warta wypróbowania? Przechodzisz zasadniczo z domeny internetowej do firmy produkcyjnej? Czy ktoś doświadczył tego przejścia? Myślę, że firma produkcyjna może mieć dobrą okazję do rozwoju. Jest też szansa, że zdobędę poświadczenie bezpieczeństwa, które może prowadzić do innych możliwości.


title: Automatyzacja na poziomie GUI lub API w Scrum

text: Jestem Inżynierem Automatyki. Używam QTP do automatyzacji. Chciałem wiedzieć kilka rzeczy. 1. W projekcie scrum, który ma 2 tygodnie pracy, jak można dokonać pełnej automatyzacji w tym czasie (mowa tylko o poziomie GUI)? 2. Podobnie, w jaki sposób można osiągnąć poziom API automatycznego testowania, zwłaszcza w ramach pojedynczego sprintu? A czym dokładnie jest testowanie poziomu API? 3. Jak rozpocząć testowanie API? Zakładam, że QTP z pewnością nie jest tutaj narzędziem.


title: Jak znaleźć pomysły na interfejs użytkownika dla systemu raportowania?

text: Zajmuję się tworzeniem systemu raportowania OS dla PHP, główny nacisk kładzie się teraz na stronę serwera. Staram się szukać przykładów dobrych UI dla systemów raportowania. Problem: istnieją dziesiątki raportów, każdy połączony ze sobą, jak się między nimi poruszać? Skąd znasz ścieżkę, którą przebyłeś, aby dostać się do konkretnego raportu itp. Jakieś przykłady?


title: Jaki jest sens przestrzeni nazw w gałęziach w git?

text: Więc głównie używam Mercurial do moich projektów i postanowiłem usiąść i nauczyć się wszystkich sztuczek Gita, aby dowiedzieć się, czy jestem po właściwej stronie (przynajmniej dla mnie). Dowiaduję się, że git używa przestrzeni nazw dla gałęzi i chciałbym wiedzieć (z twojego doświadczenia) jaki jest sens przestrzeni nazw?. W Mercurialu mogłem po prostu ustawić konwencję nazewnictwa gałęzi w następujący sposób: <nazwa gałęzi> //dla gałęzi "początkowych" <nazwa użytkownika>/<nazwa gałęzi> //dla gałęzi użytkowników Wyobrażam sobie, że jest w tym coś więcej niż tylko nazwa (oprócz unikania konfliktów nazewnictwa), ale co mogę uzyskać z tego pozornie bardziej skomplikowanego (niekoniecznie złego) modelu?


title: Czy filozofia Darta jest zgodna z testowalnością i wstrzykiwaniem zależności?

text: Jedną z krytycznych cech Darta są nazwani i konstruktorzy fabryczni. Pojawiają się opinie (od dependency injection), że konstruktory powinny być proste i po prostu przypisywać jakieś pola, a tworzenie grafów obiektowych należy do fabryk. Istnieją również pewne argumenty przeciwko metodom statycznym. Wydaje się, że konstruktorzy Darta wnoszą do konstruktorów złożoność. Nie możesz nawet mieć wielu nazwanych konstruktorów do tworzenia obiektu na różne sposoby, możesz nawet mieć statyczną fabrykę, która ma konstruować obiekt innego typu niż klasa, w której się znajduje. Jaka jest więc filozofia Darta i jak czy odnosi się (lub odpowiada) na Dependency Injection i filozofię stanu niestatycznego?


title: Czy możesz zastosować agile/TDD w każdych okolicznościach?

text: Nie jestem przeciwnikiem agile/TDD i używam go w większości przypadków. Jednak w pewnych okolicznościach czuję, że to nie działa dobrze. Na przykład pewnego dnia budowałem dość złożoną aplikację do przetwarzania danych. W idealnym świecie układałbym fundamenty, projektował komponenty, pisałby testy jednostkowe i demo na każdym sprintach, gdy kończę „funkcje”. W praktyce jednak nie wydaje mi się, żeby to działało przed wydaniem pierwszej wersji, ponieważ: * **Projekt podstawy/komponentu zmienia się często, ponieważ odkrywam, jak robić rzeczy lepiej, a proste sterowniki testowe są znacznie bardziej przydatne niż bogatsze jednostki testy** Jeśli tworzysz aplikację MVC., podstawa nie ulegnie zmianie, ale z aplikacją. gdzie w mniejszym lub większym stopniu sam budujesz framework i nie do końca wiesz, jak robić rzeczy najlepiej z góry, tak nie jest. Uważam, że proste sterowniki testowe bez automatycznej weryfikacji są o wiele bardziej przydatne niż bogatsze testy jednostkowe na tym etapie. * **Dopóki podstawowa infrastruktura nie jest na miejscu, trudno jest rozbić rzeczy na poszczególne „funkcje”** Jeśli masz już framework MVC, jest to łatwe. Ale wyobraź sobie, jak powstał pierwszy framework MVC. O wiele mniej przydatne musiało być myślenie o rzeczach jako o indywidualnych „funkcjach” na początkowych etapach, ponieważ najważniejszą rzeczą było wypracowanie zasady i filozofii oddzielania Modelu, Widoku i Kontroli oraz jak to zrobić. * **Dema pomagają bardzo niewiele, dopóki nie zostanie spora część aplikacji. gotowe** W interfejsie użytkownika możesz po prostu umieścić makiety interfejsów i uzyskać wiele cennych informacji zwrotnych. Jednak m.in. w robotach indeksujących nie można zrobić sensownej demonstracji dla osób nietechnicznych, dopóki nie zrobi się całkiem sporo, a nawet jeśli to zrobisz, zwykle i tak nie będą w stanie podać przydatnych danych wejściowych. Oczywiście, możesz zaprezentować swoim kolegom programistom, ale trudno jest podać dane wejściowe na podstawie niektórych danych wyjściowych dziennika. Zwykle o wiele bardziej produktywne jest wyjaśnianie, jak zrobiłeś rzeczy i jak planujesz to zrobić, być może pokazując ilustracje i kod, i uzyskać w ten sposób informacje zwrotne. Czy po prostu robię to źle?