title: Jestem programistą .1x w mojej firmie. Jak najlepiej mogę się przyczynić?

text: Pracuję w nowo powstałym pięcioosobowym startupie. Mamy doktorat z uczenia maszynowego, byłego członka głównego zespołu RSpec i faceta, który kompiluje binarny Git dla OS X. To tylko pracownicy; założyciel ma tytuł doktora i był dyrektorem ds. technologii w wielomiliardowej korporacji, zanim odszedł, aby założyć (odnoszący sukcesy) startup, a teraz odszedł, aby założyć ten. Możemy też znaleźć faceta z doktoratem z matematyki. Aaaaaaaa i jeszcze ja, stażysta, który porzucił studia. Myślę, że jestem całkiem sprytny i czytam bez przerwy, ale delta doświadczenia, umiejętności i wiedzy między mną a moimi współpracownikami po prostu zapiera dech w piersiach. Postaw się więc na ich miejscu: masz bystrego młodego stażystę, który musi się wiele nauczyć, ale jest przynajmniej energiczny. Co byłoby denerwujące? Jaki pożytek chciałbyś z niego wyciągnąć tu i teraz? Co byłoby mile zaskakujące, gdyby tak się stało?


title: Co muszę zrobić, aby zostać umieszczonym w dowolnej firmie programistycznej?

text: Robię mój 3 rok CSE Engineering. Myślę, że to właściwy moment, aby zadać to pytanie! Tak jak w przyszłym roku zamierzam robić projekty "zabrudzić sobie ręce". A zostało tylko kilka dni, ponieważ wiem, że wiele osób w Stack Overflow pracuje w dziedzinie oprogramowania, pomyślałem, aby zadać to pytanie. 1. Czy projekt, który robię w ostatnim roku musi być doskonały? Jeśli tak, jaki projekt zrobić? A jak można powiedzieć, że projekt jest doskonały czy nie? 2. Pisanie kodu jest czasami bardzo zabawne i poważne. Ale kod powinien mieć dobry algorytm? 3. A przede wszystkim w wywiadach z firmami zajmującymi się oprogramowaniem, jakie pytanie zadają? 4. Nie mniej ważne, opanowanie w jakimś konkretnym języku przemawia w wywiadach?


title: wymaganie ssl - czy jest to tylko wstępne uzgadnianie, aby kolejna komunikacja przez gniazdo mogła rozpocząć się normalnie?

text: Jestem nowy w SSL/HTTPS, więc nie mam pewności co do podstaw. PROBLEM: Aplet Java musi komunikować się z serwerem gniazd nasłuchującym na porcie serwera WWW. Również komunikacja musi być bezpieczna. Bez SSL aplet Java może nawiązać bezpośrednią komunikację przez gniazdo z portem serwera (działającym na serwerze WWW). Ale jeśli komunikacja musi być szyfrowana przy użyciu protokołu SSL, to w jaki sposób klient Java będzie komunikował się z serwerem gniazd? Moje zamieszanie polega na tym, że klient Java będzie musiał komunikować się z portem HTTPS (który prawdopodobnie łączy się z serwerem WWW). Ale w jaki sposób kanał komunikacyjny zostaje „oddzielony”, aby komunikować się z serwerem gniazda niestandardowego? Jak klient ssl określi port niestandardowy w wiadomości?


title: Dziedziczenie i ograniczone odniesienia

text: Powiedzmy, że mam klasy `BaseA` i `BaseB`. `BaseB` może mieć kilka odwołań do instancji `BaseA`. Teraz mamy dwie inne klasy, `DerivedA` i `DerivedB`, które odpowiednio dziedziczą po `BaseA` i `BaseB`. ![tutaj podaj opis obrazu](http://i.stack.imgur.com/rnlRx.png) Jak na takim diagramie pokazać, że `DerivedB` powinien przechowywać tylko instancje `DerivedA` a nie instancje `BaseA `? Wydawało się to dość proste, zanim próbowałem to narysować, ale teraz jestem zdezorientowany. Jedną z oczywistych odpowiedzi byłoby „przeprojektowanie kodu”; jeśli nie ma alternatywy, prawdopodobnie spróbuję to zrobić.


title: Jakie są interesujące stopnie magisterskie, które pozwalają podjąć karierę programisty w nietypowym i interesującym kierunku?

text: Więc myślę o zrobieniu magisterium lub innej formie stopnia, aby dodać do mojego licencjata z informatyki – i szukam pomysłów na niektóre z bardziej niezwykłych opcji. Wydaje się, że dość łatwo jest zrozumieć „typowe” ścieżki kariery dla programistów (i rzeczywiście mogę wybrać jedną z nich) – ale chcę również zbadać, jakie inne możliwości istnieją. Więc - co to za pytanie: szukam ludzi, którzy skierowali swoją karierę programisty w bardziej nietypowe kierunki, szczególnie z naciskiem na edukację, aby się tam dostać: * Polityka * Prawo * Psychologia * Biznes (ok, nie tak nietypowe, ale Uwzględnię to) * Inne nauki (biologia, itp.) * Cokolwiek innego, o czym możesz pomyśleć, Podejrzewam, że opcja naukowa nie będzie tą dla mnie - ale dla kompletności w pytaniu dołączę ją. Podobnie, jeśli są jakieś naprawdę interesujące odgałęzienia, o których nie pomyślałem, dodajmy je. Czym nie jest to pytanie: Jest sporo innych pytań na tej i innych witrynach wymiany stosów zajmujących się podobnymi pytaniami - i jest sporo odpowiedzi od ludzi szczegółowo wyjaśniających, dlaczego zalecają pozostanie przy komputerach na zawsze. Uwielbiam programować. I być może nadal szukam sposobów na rozwój w tej branży (kierownik zespołu, architekt itp.). Ale te odpowiedzi zostały _dobrze i naprawdę_ pokryte. Więc na to pytanie bardzo chciałbym usłyszeć od ludzi, którzy przeszli różne drogi, ścieżki kariery, na których się znaleźli, i ich przemyślenia na ten temat. Dziękuję!


title: Czy klasy definiujące ustawienia i konfigurację aplikacji powinny być zgodne z SOLID?

text: Zastanawiam się tylko, czy masz aplikację, w której definiujesz klasę, która definiuje niektóre ustawienia konfigurowalne przez użytkownika (z pliku xml lub GUI), czy powinieneś zaprojektować ją tak, aby była jak najbardziej zgodna z SOLID, podobnie jak reszta aplikacja? Mówiąc konkretniej, jak zmienić dostępne ustawienia bez naruszania **zasady otwartej zamkniętej?** Ponieważ mam problem z wyobrażeniem sobie tego. Widzę, że dodanie ustawień można rozszerzyć klasę, ale po usunięciu ustawień lub zmianie ustawienia nie byłoby możliwości zmodyfikowania klasy konfiguracyjnej tak, aby była zgodna z SOLID. Czy jakoś to możliwe? Mogę sobie również wyobrazić efekt spływania z tych zmian ustawień, które wymagają również modyfikacji klas zależnych od nich.


title: Pobieranie metod statycznych JavaScript

text: Myślałem o tym i chciałem trochę informacji zwrotnej, ostatnio pomyślałem o zrobieniu tego w ten sposób: function foo(){ if ( !foo.prototype.statics ){ foo.prototype.statics = { // zadeklaruj tutaj funkcje/zmienne statyczne } } if ( !(ta instancjafoo)){ return foo.prototype.statics; } var statics = foo.prototype.statics; // skrót // jeśli dotrze tutaj, to jest to instancja (new foo()) } foo().callStaticMethod(); (nowa Foo()).callInstanceMethod(); Czy to dobry sposób na zrobienie tego, czy myślisz o jakimkolwiek powodze, dla którego może to być anty-ojciec?


title: Jak sprawić, by mój kod aktywności był czytelny i łatwy w utrzymaniu?

text: Napisałem dość małą aplikację z tylko jedną czynnością. Z mojego punktu widzenia aktywność musi być postrzegana jako rodzaj widoku i kontrolera w jednej klasie. Ale nawet dla małej aplikacji, z 3 oknami dialogowymi (zrobionymi za pomocą AlertDialogBuilder i wszystkich tych anonimowych klas wewnętrznych, które są z nim związane) moja aktywność ma ponad 500 LOC i stała się bardzo trudna do utrzymania. Aktywność obejmuje głównie programy obsługi cyklu życia Androida i obsługę widoków. Logika biznesowa jest bardzo mała. Jak obsługiwać klasy aktywności, aby były czytelne i łatwe w utrzymaniu?


title: Synchronizowanie repozytoriów git na różnych hostach

text: Zastanawiam się nad założeniem małego projektu i chcę zrobić jego wersjonowanie za pomocą git. Bitbucket wydaje mi się dobrą opcją z ich darmowym planem. Chcę go używać jako głównego narzędzia do pracy z gitem, ponieważ są to ładne narzędzia, takie jak interfejs sieciowy, klient Mac OS i tak dalej. Ale aby mieć lepszą ochronę przed przypadkowymi uszkodzeniami, które mogą być spowodowane korzystaniem z usług innych firm, chcę również zainstalować git na moim NAS jako drugą kopię zapasową repozytorium. Teraz moje pytanie brzmi, czy możliwe jest utworzenie repozytorium na dwóch różnych hostach, a następnie zsynchronizowanie ich? Na przykład raz w tygodniu aktualizuję repozytorium na moim NAS do tego, co jest w Butbucket. A na wypadek, gdyby coś się stało z Bitbucket, nadal mam pełne repozytorium z pełną historią rozwoju na mojej lokalnej pamięci NAS. A czy istnieje sposób na zaimportowanie istniejącego repozytorium z pełną historią do innej usługi git?


title: Jak chronisz swoją usługę WCF?

text: czasami programista wpada na genialny pomysł na zabezpieczenie swojego serwisu internetowego stworzonego za pomocą Windows Communication Foundation. Chciałbym usłyszeć od was, jakich technik używasz do ochrony swojej usługi WCF i uniknięcia nieautoryzowanych użytkowników, którzy ją wykorzystują? Na przykład: * unikaj personifikacji, używaj jej tylko w razie potrzeby * publikuj informacje o metadanych, aby zapobiec manipulacjom * unikaj zużycia pamięci, wymuszanie maksymalnego rozmiaru * utwórz token kontekstu bezpieczeństwa, aby kontrolować liczbę sesji


title: Jak zmienić się z programisty noob w guru?

text: Jestem programistą od dwóch lat i coraz trudniej jest mi podnieść swoje umiejętności, szczególnie pracując obecnie przy utrzymaniu starszego kodu. Myślę, że ciężka praca nie wystarczy, aby podnieść moje umiejętności, ponieważ wokół nas jest mnóstwo opensource'ów, mój projekt jest mieszanką opensource'ów --- od frontendu do backendu, od poziomu prezentacji do poziomu logiki biznesowej. Moja praca to po prostu sklejanie wszystkich tych rzeczy razem lub coś mniej skomplikowanego, czyli zbieranie danych z interfejsu użytkownika do modułu logicznego, a następnie pobieranie przetworzonych danych i umieszczanie ich w interfejsie użytkownika. Czasami istnieje potrzeba dodania prostej logiki (jak asemblowanie danych do formularza pasującego do interfejsu logiki biznesowej) podczas transportu danych. Czy mógłbyś mi zasugerować, co powinienem zrobić na boku, aby poprawić moje umiejętności? Dziękuję!


title: GPLv2 i formaty

text: Czy uważasz, że redystrybutor dostarczający pełne źródła w dziwnym formacie archiwum przestrzega GPL? Ten projekt http://sourceforge.net/projects/minivmac/ jest GPLv2 oparty na wcześniejszym emulatorze vMac, ale udostępnia źródło wyłącznie w obrazach dysków Mac. Chociaż po przejściu przez kilka pętli możesz w końcu uzyskać do niego dostęp na większości platform lub użyć Linux LiveCD, aby go wyodrębnić i przetłumaczyć na jakiś otwarty format, wydaje się, że jest to sprzeczne z wymogiem dostarczenia użytecznego kodu źródłowego. Nawet jeśli ten konkretny przykład był w porządku. Gdzie rysuje się linię? Co ma powstrzymać złośliwego dostawcę przed rozpowszechnianiem swoich modyfikacji na busybox w formacie WordPerfect? Zdjęcia kart perforowanych ENIAC w formacie Deluxe Paint? Albo, ostatecznie, jakiś format ad-hoc, którego nikt nie może przeczytać?


title: Jaka jest różnica w wieloletnim doświadczeniu programisty w posługiwaniu się językiem?

text: Jak wskazuje tytuł, jaka jest różnica w latach doświadczenia w danym języku pod względem programistów? Na przykład, jeśli jeden programista przez pięć lat pracował z językiem A, a drugi dwa lata z językiem B, a następnie trzy lata z językiem A, czy byłaby dostrzegalna różnica między nimi?


title: Jak zarządzasz swoją listą lektur?

text: Jak zarządzasz swoją listą lektur? Podobnie jak ja, prawdopodobnie masz w drodze 12 książek technicznych na raz, i to nie wliczając książek nietechnicznych :) Jakieś wskazówki? Odnośnie TDG


title: Dokumenty specyfikacji wymagań

text: Muszę pracować z projektami informatycznymi w zakresie tworzenia systemów lub stron internetowych, aby doskonalić swoje umiejętności zgodnie ze specyfikacją wymagań. Czy jest dostępna specyfikacja wymagań do pobrania w celu stworzenia aplikacji?


title: Czy stos technologii .NET/Microsoft jest opłacalną opcją dla startupu z ograniczonymi finansami?

text: Mam bezpłatny staż w bardzo nowej firmie z niewielkim doświadczeniem technicznym, która próbuje być klonem Groupona. Obecnie używają Wordpressa, a ja próbowałem zdecydować, do jakiego frameworka internetowego mają ich popchnąć, ponieważ będę musiał nauczyć się tego języka i go również zaimplementować. Czy ASP.Net MVC jest realistyczną opcją dla internetowej firmy typu start-up z niewielkim zapleczem finansowym? Na przykład wiem, że w Rails hosting jest nieco tańszy ze względu na cały wolny system operacyjny i są dostępne darmowe „perełki” do robienia rzeczy takich jak mailery, ale o ile droższe może być, jeśli pójdę z ASP.Net MVC skoro takie dodatki przestają być open source? Ile do tego równania dodaje koszt hostingu aplikacji .NET?


title: Dlaczego miałbym chcieć warstwy UnitOfWork, jeśli moja warstwa logiki usługi/biznesu jest wystarczająco szczegółowa?

text: Wchodzę w wzorzec Repozytorium (który uwielbiam) i czytając go, widzę ten wzorzec UnitOfWork w wielu artykułach. Zanim dowiedziałem się cokolwiek o UnitOfWork, po prostu używałem mojego wzorca Repozytorium w mojej warstwie usług (logika biznesowa). Wydaje się, że to działa świetnie, więc zastanawiam się, dlaczego posiadanie innej warstwy (tj. UnitOfWork) może być korzystne? Dlaczego miałbym chcieć mieć warstwę UnitOfWork w warstwie logiki usługi/biznesu? Jeśli twoja warstwa usług jest wystarczająco szczegółowa i nie obejmuje wszystkiego pod słońcem, nie wydaje się, że jest potrzebna. Zauważ, że patrzę na to z perspektywy EF. Czytałem nawet artykuły, w których ludzie wspominają, że DbContext EF jest UnitOfWork. Po co więc tworzyć własne UnitOfWork, jeśli DbContext EF już to dla mnie robi? Dlaczego nie utworzyć mojego DbContext w mojej warstwie usług, a następnie pobrać potrzebne repozytoria i zrobić wszystko dobrze? Repozytorium, które dostaję, ponieważ ułatwia testowanie moich usług, ale nie widzę korzyści z UnitOfWork, szczególnie jeśli używasz ORM.


title: Jak przeprowadzić skuteczny przegląd kodu zmian w bibliotece?

text: Jeden z moich projektów właśnie zmienił numer wersji wspierającej biblioteki innej firmy. W szczególności zmieniliśmy aplikację J2EE z JPA 1.x na JPA 2.0. Nasz system CI ma tę zmianę od tygodnia i testy mijają. Ogólnie rzecz biorąc, jak mogę przeprowadzić skuteczny przegląd kodu i kontrolę jakości, gdy inny programista zmienia wersję biblioteki innej firmy? Zrobiłem już następujące czynności: * przejrzałem dzienniki zmian dla biblioteki, obserwując rzeczy, które mogłyby wpłynąć na moją aplikację * sprawdziłem deklaracje zależności (Maven POM) pod kątem błędów * przeszukałem nasz system zgłoszeń pod kątem wcześniejszych prób lub aktualizacji tych samych bibliotek, zrobiłem próbujemy tego wcześniej i nie udaje nam się lub znajdujemy blokera


title: Jaki wzorzec rozwiąże ten problem - pobranie zależnego rekordu z bazy danych

text: Mam te klasy class Match { int MatchID, int Team1ID, //używane do odwoływania się do Team int Team2ID, ... inne pola } Uwaga: Match faktycznie ma 2 zespoły, co oznacza 2 TeamID class Team { int TeamID, string TeamName } W moim widok Muszę wyświetlić `List<Match>` pokazujący nazwę zespołu. Dodałem więc kolejne pole klasy Match { int MatchID, int TeamID, //używane do odwoływania się do Team ... other fields string TeamName; } Mogę teraz zrobić Match m = getMatch(id); m.NazwaZespołu = pobierzNazwęZespołu(m.IdZespołu); //pobierz nazwę z bazy danych Ale w przypadku `List<Match>` `getTeamName(TeamId)` przejdzie do bazy danych, aby pobrać TeamName dla każdego TeamID. Dla strony zawierającej 10 dopasowań na stronę, może to być wycieczka `(10x2Teams)=20` do bazy danych. Przykład: for(1..10) { Dopasuj m[i] = pobierzDopasuj(i); //drużyna nigdy się nie powtórzy, 20 drużyn rozłożonych na dziesięć meczów m[i].Team1Name = getTeamName(m.Team2Id); m[i].NazwaZespołu2 = pobierzNazwaZespołu(m.IdZespołu); } Aby tego uniknąć, wpadłem na pomysł, aby załadować wszystko raz, zapisać to w pamięci i tylko wyszukać TeamName w pamięci. To skłoniło mnie do przemyślenia, co jeśli rekordów jest 5000 lub więcej. Jaki wzór jest używany do rozwiązania tego i jak?


title: Jak zostać zwinnym programistą?

text: Jestem stażystą w branży deweloperskiej. Mój szef mówi, że powinienem być zwinnym programistą. Przejrzałem sieć i znalazłem kilka interesujących rzeczy na temat programowania zwinnego. Będąc nowicjuszem, jak zacząć z Agile? Jaki powinien być mój pierwszy krok w programowaniu Agile? Obecnie zajmuję się programowaniem w parach. Ale to nie jest dokładnie programowanie w parach, ponieważ po prostu obserwuję, co robi mój współtwórca. Chciałbym też być programistą zwinnym. Czy możesz zasugerować mi drogę krok po kroku? Pragnę rozwijać siebie i swoje umiejętności programistyczne.


title: Witryny z nakładającymi się bazami kodu. Tworzenie wielu witryn z niewielkimi zmianami

text: Muszę stworzyć 3 różne witryny 1. video.com do hostowania wideo 2. audio.com do hostowania dźwięku 3. docs.com do hostowania dokumentów. _tylko nazwy domen_ Prawie 80% funkcjonalności jest taka sama dla wszystkich trzech, a pozostałe 20% to zupełnie inne funkcje... Jak sobie z tym poradzić? Jak radzą sobie z tym strony takie jak SO? Rozwijam to w frameworku YII i myślałem o posiadaniu tych różnych funkcji jako modułów, ale w tym przypadku linki menu/kodu w kodzie html mogą stać się trudne.


title: Jaki jest najłatwiejszy (najszybszy) sposób udostępnienia jednego zestawu danych w mojej aplikacji komuś innemu?

text: Mam javascript, który tworzy obraz na płótnie, który chcę udostępnić użytkownikom. Po prostu muszę jakoś zapisać obraz. Nic więcej. Zastanawiałem się nad użyciem kawałków rubinu i activerecord, a może sinatry, ale czuję, że oba te elementy byłyby zbyt zabójcze dla tego prostego zadania. Idealnie chciałbym to zrobić za pomocą JavaScript, ale nie mam ochoty włączać całego węzła. Jakieś sugestie?


title: Czy system plików jest jednym z NoSQL? Jaka jest główna różnica?

text: Jestem tym zdezorientowany. Mogę używać lucene do tworzenia indeksu i uruchamiania zapytań w systemie plików. Mogę bardzo szybko znaleźć dowolny konkretny plik, jeśli mogę podać klucz podstawowy, w tym przypadku ścieżka katalogu i nazwa pliku działają jako klucz podstawowy. Wygląda bardzo podobnie do NoSQL.


title: Co robisz, aby poprawić swoje umiejętności komunikacji głosowej?

text: Bycie programistą to nie tylko przeglądanie najnowszej fajnej technologii lub debugowanie podstępnego błędu w kodzie, musimy rozmawiać z naszymi współpracownikami, kierownikiem projektu lub szefem w najbardziej efektywny sposób; mamy dema, wywiady, przeglądy kodu i tak dalej, gdzie ta umiejętność jest bardzo istotna. Osobiście jako solowy programista (od 2008 roku) nie zainwestowałem wiele czasu w doskonalenie tej umiejętności i chciałbym wiedzieć, co robisz, aby ją poprawić.


title: Zintegruj MS Dynamics AX z Play Framework

text: W mojej firmie używamy MS Dynamics AX 2009. Jest to ERP firmy. Mamy około 100 użytkowników. Serwery MS Dynamics AX znajdują się w centrali firmy. Tworzymy nową stronę internetową z wykorzystaniem Play Framework i języka Scala. Jednak serwer strony internetowej nie znajduje się w siedzibie firmy, serwer dedykowany jest hostowany w OVH, europejskim dostawcy usług internetowych. Strona potrzebuje danych ERP w czasie rzeczywistym, ale baza danych MS Dynamics AX znajduje się w centrali firmy, a połączenie internetowe jest bardzo niestabilne. To jest problem! Potrzebujemy dwukierunkowej komunikacji między stroną internetową a ERP, ale połączenie internetowe serwerów ERP jest bardzo niestabilne. Pomyśleliśmy o dwóch rozwiązaniach: * Użyj RabbitMQ w siedzibie i na stronie internetowej. Gdy w ERP wystąpi zdarzenie, ERP umieszcza wiadomość w RabbitMQ, a strona otrzymuje tę wiadomość, gdy połączenie internetowe działa. Gdy na stronie wystąpi zdarzenie, strona umieszcza wiadomość w RabbitMQ, a ERP otrzymuje tę wiadomość, gdy połączenie internetowe działa. Mamy więc 2 RabbitMQ, jeden w centrali, a drugi na serwerze WWW. * Użyj MS SQL Server Replication do replikacji bazy danych z centrali do dostawcy usług internetowych, potrzebowalibyśmy dwóch serwerów u dostawcy usług internetowych: strony internetowej (Linux, Apache, MySQL, Play Framework) i SQL Replica (Windows, SQL Server). Gdy w systemie ERP wystąpi zdarzenie, replikacja SQL Server propaguje te zmiany do serwera replikacji SQL u dostawcy usług internetowych, a witryna internetowa zawsze odczytuje dane z serwera replikacji SQL. Gdy na stronie pojawi się zdarzenie, potrzebujemy również kolejki RabbitMQ, tak jak poprzednio. Co myślisz o tej architekturze? Jakie jest najlepsze rozwiązanie? Czy MS SQL Server może replikować się przy użyciu niestabilnego połączenia internetowego? Z góry dziękuję.


title: Czy dobrą praktyką jest deklarowanie zmiennych instancji jako None w klasie w Pythonie?

text: Rozważ następującą klasę: class Osoba: def __init__(self, name, age): self.name = name self.age = age Moi współpracownicy zwykle określają to w ten sposób: class Person: name = None age = None def __init__(self , imię, wiek): self.name = imię self.age = wiek Głównym powodem tego jest to, że wybrany przez nich edytor pokazuje właściwości autouzupełniania. Osobiście nie lubię tego ostatniego, ponieważ nie ma sensu, aby klasa miała te właściwości ustawione na `Brak`. Który byłby lepszą praktyką iz jakich powodów?


title: Refaktoryzuj stary model modyfikacji LastUser na każdym obiekcie?

text: Mam wymaganie programowe, które musi przechowywać użytkownika, który dokonał ostatniej modyfikacji innego obiektu, dla każdego obiektu (załóżmy, że wszystkie obiekty są już zmapowane i umieszczone w BD). Więc mamy ParamBase obiekt, który przechowuje podstawowe dane dla każdego obiektu, to będzie super klasa, każdy inny parametr w systemie będzie dziedziczył tę klasę, (Używając @MappedSuperClass) @MappedSuperclass ParamBase { @Id @GeneratedValue(strategy = GenerationType.AUTO) prywatny Długi identyfikator; @Wersja prywatna Długa wersja; @Temporal(value = TemporalType.TIMESTAMP) private Data timeStampLastModification; @Column private Użytkownik userOfLastModification; //konstruktory, ustawiacze pobierające, inne rzeczy itp. } Obiekt User, który będzie reprezentował użytkownika, również zmapowany do BD, na razie jest po prostu prostym Obiektem mapowanym jako Entity, wszystkie inne parametry będą musiały przechowywać tego użytkownika w polu . @Entity User { //User stuff, cons, get, seters, etc } @Entity Country extends ParamBase { //Ta klasa rozszerza ParamBase, więc będzie miała pole do przechowywania //userOfLastModification } W EJB mam logikę biznesową, która będzie praca z kilkoma operacjami i obiektami, gdy w tym przypadku parametr zostanie zaktualizowany, userSession (przypisany przy logowaniu) zaktualizuje pole userOfLastModification. PROBLEM: Wszystkie obiekty będą miały relację z użytkownikiem, więc wszystkie inne obiekty mają zmapowane pole userOfLastModification_id, co tworzy ogromną zależność wszystkich klas od użytkownika. Aby dać ci pomysł, po prostu obraz na diagramie ER relacji encji, wszystkie tabele powiązane z jedną tabelą użytkownika, bałagan!!! REFAKTOR!: Myślę, że ten model jest błędny, myślę, że łamie równowagę projektowania oprogramowania Nie sądzę, że musisz tworzyć relację między wszystkimi tabelami/obiektami do jednej tabeli (Użytkownika), aby spełnić to wymaganie, spodoba mi się kilka opinii lub pomysłów, jak: 1\. Wyjaśnij błąd projektowy, jeśli taki istnieje? (Zawsze myślę, że mogę się mylić i nie ma z tym problemu) 1. Czy istnieje lepszy sposób na zrobienie tego? Dzięki za pomoc!


title: Jakie są główne wyzwania, przed którymi stoisz jako jednoosobowy niezależny dostawca oprogramowania?

text: Jako jednoosobowy niezależny dostawca oprogramowania, jakie są główne wyzwania, z którymi się zmierzyłeś? Jak poradziłeś sobie z tymi wyzwaniami?


title: Jak najlepiej zaprojektować tabelę z dowolnym identyfikatorem?

text: Mam potrzebę stworzenia tabeli z unikalnym id jako PK. Identyfikator jest kluczem zastępczym. Początkowo miałem naturalny klucz, ale zmiany wymagań podważyły ten pomysł. Następnie rozważałem dodanie tożsamości automatycznie zwiększającej się. Ale to stwarza problemy. A. Nie mogę podać własnego identyfikatora. B. Identyfikatory są trudne do zresetowania. Oba te czynniki razem utrudniają kopiowanie tej tabeli z nowymi danymi lub przenoszenie tabeli między domenami, np. Deweloper do kontroli jakości. Muszę odwołać się do tych identyfikatorów z interfejsu, JavaScript... więc nie mogą się zmieniać. Tak więc jedynym znanym mi sposobem na sprostanie wszystkim tym wyzwaniom jest stworzenie identyfikatora GUID. W ten sposób mogę nadpisać identyfikatory, gdy zajdzie taka potrzeba, lub mogę wygenerować nowy bez obawy o zamówienie (np. identyfikator oparty na „int” wymagałby znajomości ostatniego wprowadzonego identyfikatora). Czy GUID to najlepszy sposób na osiągnięcie moich celów? Biorąc pod uwagę, że GUID jest ciągiem, a łączenie na ciągu jest kosztownym zadaniem, czy istnieje lepszy sposób?


title: Metoda usuwania logiki z interfejsu użytkownika

text: W mniej doświadczonych czasach dodałem dużo logiki biznesowej w kodzie mojego .aspx. Teraz wracam do tego. Chciałbym zrefaktoryzować bałagan i wszystko uporządkować. Jak mam się do tego zabrać? Jeśli mam poruszyć moją logikę, gdzie ją umieścić? Czy mam osobne zajęcia dla każdej strony?


title: Instancja modeli MVC

text: Gdzie należy umieścić Modele w architekturze MVC? Rozumiem, że preferowanym sposobem byłyby zewnętrzne kontrolery, w pliku ładowania początkowego i wstrzyknięte przy użyciu kontenera wstrzykiwania Dependecy. Jednak większość modeli, z którymi pracuję, zależy od parametrów wykonawczych. //PHP Przykładowa klasa UserController { protected $objUser; chroniony $objDictionary; funkcja publiczna Show() { $objUserMapper = new UserMapper(); $this->objUser = $objUserMapper->FindById($_GET['id']); $this->objDictionary = nowy słownik($this->objUser->Język); } }


title: Jaki jest najlepszy sposób obsługi zmian w ostatniej chwili w zakresie produktu?

text: Jaki jest najlepszy sposób obsługi zmian wymagań lub zakresu produktu podczas lub po przeprowadzeniu testów akceptacyjnych użytkownika (UAT)? Jak niebezpieczne jest wprowadzanie tych zmian i jak można je złagodzić?


title: Gotcha na interoperacyjność języka .Net

text: Mam nadzieję, że jest to odpowiednie forum do zadania tego pytania. Grupa kolegów i ja dopiero kilka tygodni temu zaczynamy naukę C# i planujemy dyskusję na temat interoperacyjności językowej. Tak więc szukam znanych / klasycznych przykładów problemów z interoperacyjnością języka .Net. Podobnie jak ten, w którym niewrażliwość na wielkość liter w VB.Net powoduje, że przeciążona metoda C# jest niezgodna. **W C#** public class Foo { public void foo() { } public void fOO() { } } **W VB.Net** Public Class Bar Sub Bar() Dim foo As Foo foo = New Foo() foo.foo(); //błąd kompilatora End Sub End Class Lub ten, w którym słowo kluczowe VB.Net jest używane w nazwie metody C#: **In C#** public class Foo { public virtual void Stop() { } } **W VB. Net** Public Class Bar Dziedziczy Foo Public Overrides Sub Stop() 'błąd kompilatora End Sub End Class Chciałbym zebrać jeszcze kilka przykładów tego typu problemów. Czy ktoś zna inne ciekawe przypadki problemów z interoperacyjnością językową? W tych przykładach użyłem C# i VB.Net, ale każdy problem z interoperacyjnością języka .Net będzie równie dobry, aby wzbogacić dyskusję na ten temat.


title: Czy istnieją już jakieś prawidłowe zastosowania klas System.Collections.Specialized?

text: Czy istnieją już jakieś prawidłowe zastosowania klas w przestrzeni nazw System.Collections.Specialized, czy też wszystkie są teraz zastępowane przez klasy w przestrzeni nazw System.Collections.Generic, System.Collections.Concurrent i System.Collections.ObjectModel? Klasy w przestrzeni nazw to: HybridDictionary ListDictionary NameValueCollection OrderedDictionary StringCollection StringDictionary StringEnumerator Podobnie, czy istnieją prawdziwe powody, dla których można użyć nieogólnych klas przestrzeni nazw System.Collections, takich jak: ArrayList BitArray Hashtable Queue SortedList Stack


title: Algorytmy parowania systemu ocen z kolejką przydziałów

text: Próba zbadania, w jaki sposób umożliwić grupie ludzi skuteczne uszeregowanie zestawu obiektów (każdy członek grupy wniesie jeden obiekt do grupy), a następnie przypisanie każdemu członkowi obiektu, który nie jest ich własnym na podstawie: * Ich ocen obiekty, * ocena ich obiektów, oraz * obiekt pozostały do przypisania. Pomysł polega na próbie przypisania obiektów do ludzi na podstawie oceny ich wkładu w grupę w stosunku do wkładu innych członków, osobistych preferencji wyrażonych za pomocą ocen. Wszelkie sugestie dotyczące: * dalszych badań, * dopracowania sformułowania problemu/rozwiązania, lub * rozwiązania.


title: Jak sprawić, by mój kod decydował, którą klasę utworzyć na podstawie parametru?

text: Posiadam system, w którym będę wykonywać zapytania do bazy danych. Chcę, aby Query1, Query2 i Query3 używały tych samych metod w drodze do warstwy źródła danych. W tym celu chciałbym zrobić coś podobnego do wzorców strategii lub szablonów, gdzie mam część kodu, która jest domyślnym zachowaniem dla wszystkich zapytań (dojście do warstwy bazy danych, połączenie, wykonanie zapytania itd.) oraz część zmienna (budowanie samego zapytania). Myślę, że ten pomysł jest dobry i wykonalny. Otrzymałbym od klienta parametr określający zapytanie do zbudowania, zbudowania i uruchomienia. Jedyne pytanie brzmi: biorąc pod uwagę ten parametr, jak mogę zdecydować, którą metodę wywołać, aby zbudować zapytanie? Oto moje obecne rozwiązanie: (czy to rozwiązanie jest wzorcem?) public Query QueryFactory(string queryIdentifier){ if(queryIdentifier == "query1") return BuildQuery1(); else if(queryIdentifier == "query2") return BuildQuery2(); } Działa, ale myślę, że to nie jest "wystarczająco ładne", chciałbym coś ładniejszego. Byłoby idealnie, gdyby programista nie musiał dodawać nowej instrukcji if podczas tworzenia nowego zapytania. **Czy jest jakiś sposób na ulepszenie tego łańcucha if/else? I żeby ta decyzja była automatyczna?** Edycja: Problem, który chcę rozwiązać to: mam zapytania, które będą wywoływane w bazie danych. Chcę mieć ten sam przepływ, więc nie mam zduplikowanego kodu dla zapytań, w których nie zastosowano żadnej logiki biznesowej (np. pobranie wszystkich użytkowników, pobranie wszystkich studentów itd.)


title: Jak korzystasz z JavaScriptu?

text: Nie jestem zawodowym programistą, ale mając doktorat z dziedziny inżynierii, przez lata nauczyłem się wielu języków programowania. Przez ostatnie kilka lat używałem głównie Rubiego, a teraz próbuję nauczyć się JavaScript, aby móc trochę programować w sieci. Wydaje mi się, że podobnie jak wielu ludzi, miałem głównie negatywne wrażenie o JavaScript, ale kiedy studiuję język (poprzez książkę JavaScript: The Good Parts Crockforda), stwierdzam, że funkcjonalna część języka jest naprawdę schludny. Bawiłem się Haskellem kilka lat temu, więc miałem pomysł na programowanie funkcjonalne. Zastanawiam się, jak profesjonalni programiści mają tendencję do używania języka. Czy pisząc w JavaScript trzymasz się jednego paradygmatu, czy używasz go jak szwajcarskiego scyzoryka i używałeś różnych paradygmatów do różnych problemów? Czy istnieje obecnie „najpopularniejszy” sposób korzystania z niego, czy po prostu zależy to od programisty, problemu, firmy itp.?


title: Podstawy TCP i UDP: łączenie się ze stroną internetową

text: Właśnie uczę się sieci komputerowych, więc wybacz mi, jeśli to pytanie jest naiwne. Wiem, że protokół TCP wiąże się z portem do momentu zakończenia przesyłania wiadomości (port 80), a UDP to najlepszy wysiłek (tj. bez wiązania). Moje pytanie brzmi, czy próbuję uzyskać dostęp do dwóch witryn jednocześnie (wiele kart w mojej przeglądarce), zakładając, że obie witryny są serwerami internetowymi, moje pytania to 1. Czy mój komputer najpierw komunikuje się z jedną usługą internetową (witryną), a następnie komunikuje się z inne (seryjnie). Również jeśli tak jest, to czy różnica czasu jest tak mała, że czuję, że ładuje się jednocześnie? 2. Załóżmy, że mam własny serwer WWW (tomcat) działający na porcie 80, jak mogę komunikować się z innymi witrynami, jeśli dzieje się to na tym samym porcie? 3. Czy strony internetowe decydują, którego protokołu używać TCP lub UDP?


title: Czy model członkostwa HL7 jest normalny?

text: Dla mnie to trochę dziwne, że HL7 wymaga, abyś był członkiem, aby rozpowszechniać standard w swojej organizacji i w tym sensie wdrażać standard i mówić innym, którzy wdrożyli standard, jakie części będziesz wdrażać, zwłaszcza gdy nie jest to nic bardziej klasycznego niż kilka potoków i karetek dla 2.x i jakiś XML dla 3.0. Rozumiem płacenie pieniędzy za korzystanie z biblioteki do wykorzystania HL7 lub nawet kod źródłowy do zbudowania biblioteki do korzystania z HL7. Ale jaki jest sens wymaganie członkostwa, aby zobaczyć specyfikację do napisania kodu źródłowego, aby zbudować bibliotekę wykorzystującą HL7?


title: Jak wyglądałby kod bajtowy maszyny rejestrującej dla tego kodu?

text: Mam nadzieję, że tego rodzaju pytanie nie jest nie na temat na tej stronie. W końcu rozumiem, czym jest maszyna oparta na stosie i jak skompilować dla niej kod. Na przykład, następujący kod: `2 * 5 + 1` skompiluje się do tego kodu bajtowego: push 2 push 5 mult push 1 add Jednak chcę zrozumieć, że podstawowe różnice między kompilacją dla maszyny opartej na stosie a kompilacją dla maszyny opartej na stosie maszyna oparta na rejestrze. Zasadniczo chcę zobaczyć, jak wyglądałby kod bajtowy maszyny rejestrującej, w przeciwieństwie do kodu bajtowego maszyny stosu. Aby to zrozumieć, chciałbym prosić o pokazanie mi, jak wyglądałby kod bajtowy powyższego wyrażenia dla maszyny rejestrującej. Tj. do czego skompiluje się to: `2 * 5 + 1`.


title: Przekazywanie typu anonimowego do powiązanej kontroli

text: Ogólnie rzecz biorąc, jestem dość przeciwny używaniu typów anonimowych w kodzie w świecie rzeczywistym (z wyjątkiem LINQ i kilku innych specyficznych scenariuszy), ale patrzę teraz na sytuację, w której muszę powiązać ASP `GridView` kontroli z kolekcją wartości krotek i wyglądają całkiem kusząco. Zasadniczo muszę pokazać listę kont własnościowych, które są powiązane z różnymi nazwami komputerów. Obecnie nie mam typu, który zawiera te dwie właściwości, ponieważ nie używam ich razem w ten sposób nigdzie indziej. To, co normalnie zrobiłbym w takiej sytuacji, to po prostu utworzyć nową klasę, która ma właściwości, ustawić `ItemType` w `GridView`, aby odwoływać się do tego typu, a następnie zbudować obiekty tego typu w mojej metodzie `Select` (I używaj `ObjectDataSource` przez większość czasu). Ale teraz myślę, że tak naprawdę nie ma korzyści z dorzucania tej dodatkowej klasy, ponieważ bez względu na to, co wiąże się z refleksją. **Czy jest jakiś powód, aby unikać używania anonimowych typów w sytuacjach wiązania danych takich jak ta?** Zaakceptowałbym wszystko: wydajność, czytelność, łatwość utrzymania, zasadę lub cokolwiek innego, co możesz mi rzucić. Ale jedyną wadą, o której mogę pomyśleć, jest to, że chcę użyć właściwości `Item` do silnego typu powiązania danych, ale w tym konkretnym przypadku nie mam zastosowania do niczego więcej niż `BoundField`s. Oczywiście wszystko to opiera się na założeniu, że to nawet działa, co prawda nie próbowałem tego jeszcze z anonimowymi typami, więc może po prostu nie być obsługiwane z tego czy innego powodu.


title: Jak mogę się dowiedzieć, czy inny projekt to głównie konserwacja i błędy?

text: Zacząłem pracować w stosunkowo dużej firmie, która niestety ma swój udział w sporej ilości starszego kodu i skończyło się na tym, że spędziłem bardzo zwyczajną ilość czasu na konserwacji i poprawkach błędów. Chciałbym zmienić projekt, ponieważ na powierzchni są inne projekty, które „wydają się” interesujące. Problem w tym, że nie jestem pewien, czy tam też jest lepiej. Poprosiłem kilku kolegów, żeby zobaczyli, co się dzieje, a oni „twierdzą”, że zajmują się fajnymi rzeczami, ale tak naprawdę im nie wierzę, ponieważ w jednym z przypadków wiem na pewno, że jest w takiej samej sytuacji jak ja. Więc moje pytanie jest następujące: Jeśli nie mam kogoś, komu naprawdę mogę zaufać, że dokona dobrego wyboru, jeśli chodzi o zamianę na inny projekt, czy istnieje sposób, abym mógł się dowiedzieć sam (mam na myśli to, że wszędzie jest tak samo)? Jednym z pomysłów byłoby wykonanie „odwrotnej” inżynierii, tj. rozpoczęcie śledzenia każdego zobowiązania osoby w repozytorium, aby dowiedzieć się, co kombinuje. Ale takie podejście wydaje mi się irracjonalne. Z pewnością musi być lepszy sposób?


title: stworzenie klonu strony to dobry pomysł na projekt?

text: Próbuję swoich sił w Pythonie, Django, JQuery.. itp., Aby zrobić klon strony imdb. Obecnie zajmuję się tworzeniem stron internetowych z ostatnich 10 miesięcy na tych samych technologiach. W wolnym czasie chcę rozwinąć projekt poboczny, który może dobrze wyglądać w CV. Wpadłem na _pomysł_, żeby zrobić klona imdb.com. Ale po 2 tygodniach rozwoju przestałem. powody: _to nie jest inne_ 1. Po co tworzyć inny plik imdb? 2. Nie poprawiam tego? 3. Zmierz się z tym, będzie to sub standard oryginalnego. Potrzebą projektu jest pokazanie moich umiejętności w powyższych technologiach, ale jednocześnie chcę, aby był użyteczny.


title: Jestem użytkownikiem git zdezorientowanym rozgałęzieniem mercuriala. Jak mam śledzić drobne zmiany?

text: Zawsze wcześniej używałem git, ale chcę przyczynić się do rozwoju Pythona, więc teraz muszę się uczyć mercurial i uważam to za bardzo frustrujące. Zrobiłem więc kilka małych łat i chciałem je śledzić jako zmiany w moim lokalnym repozytorium mercurial. Podobno istnieją 4 sposoby radzenia sobie z rozgałęzieniem w rtęci. 1 i 4 wyglądały dla mnie kompletnie śmiesznie, nazwane gałęzie wydają się być ciężkie i czuję, że nie powinienem ich używać do szybkich poprawek 1-commit, więc użyłem zakładek. Teraz moja łatka zostaje odrzucona i chcę usunąć jedną z gałęzi zakładek z mojego repozytorium. OK, w git po prostu wymusiłbym usunięcie gałęzi i zapomniałem o tym, więc usuwam zakładkę i teraz mam następujące problemy: * TortoiseHG i `hg log` wciąż pokazują, że commit i `default` branch mają 2 głowice. A jeśli dobrze rozumiem, nie można usuwać zatwierdzeń w hg bez dodatkowych wtyczek. * Mercurial ma nie tylko skróty, ale także numery wersji. Ponieważ dodałem kilka moich własnych zatwierdzeń, wszystkie późniejsze zatwierdzenia mają inne numery wersji niż główne centralne repozytorium. * Robię `hg update` po pociągnięciu, aby automatycznie przenieść zakładkę `master` do najnowszego zatwierdzenia, ale nie mogłem znaleźć sposobu, aby to zrobić w TortoiseHG. Co ja robię źle? Czy to normalne i oczekiwane i czy powinienem po prostu zignorować te problemy? Albo jak mam pracować z moimi oddziałami?


title: Jak zlokalizować Niewywołane funkcje?

text: Patrzę na jakiś kod C/C++, który wydaje się mieć zdefiniowane funkcje, ale nigdy nie są używane. Jest to dość żmudny proces śledzenia kodu i weryfikacji. Zrobiłem kilka ankiet i istnieje wiele narzędzi, które mogą przeprowadzić tego typu analizę. Czy ktoś może podzielić się jakimiś doświadczeniami lub wskazówkami, które narzędzia i techniki są najlepsze lub nie stosuje się alternatywnych metod weryfikacji tego kodu?


title: Alternatywy dla wartości null i typów podobnych do opcji

text: W związku z tym pytaniem chcę wiedzieć, czy istnieje zwięzły sposób na wyeliminowanie wartości null z kodu w ogóle, czy nie. Np. wyobraź sobie klasę reprezentującą użytkownika z atrybutem urodziny, który _można_ ustawić, ale nie musi, co oznacza, że ma wartość null. W scala i podobnych językach można to opisać za pomocą typu Option i rozumiem, dlaczego jest to lepsze niż zwykła wartość null, którą można by zakodować w javie. Zastanawiam się jednak, czy to właściwa koncepcja, czy też możemy zrobić to lepiej w tym przypadku, a nawet w ogóle. Wpadłem na pomysł, że moglibyśmy zastąpić datę urodzenia użytkownika (i inne opcjonalne lub prawdopodobnie nieznane/nieustawione atrybuty) listą możliwych opcjonalnych atrybutów. Moglibyśmy więc mieć jak ourUser.getOptionalAttributes() // mógł zwrócić listę [Date Birthday, Float Height, Color Eyecolor] // lub po prostu [Color Eyecolor] // lub nawet pustą listę Jednak użycie zwykłej listy oznaczałoby, że może przechowywać wiele urodzin, np. Potrzebowaliśmy więc sposobu na poinformowanie kompilatora, że lista może zawierać tylko jeden typ urodzin. Czy jestem tutaj całkowicie na złej drodze i czy typy opcji są (filozoficznym) właściwym sposobem wyrażania opcjonalnych atrybutów? Ponadto, czy istnieją dodatkowe koncepcje dotyczące obsługi logiki atrybutów opcjonalnych innych niż typy dopuszczające wartość null i typy podobne do opcji?


title: czy złożony wzorzec projektowy byłby przydatny do członkostwa w grupie?

text: Próbuję wymyślić najlepszy sposób obsługi członkostwa w grupach na stronie internetowej. Ludzie rejestrują się i zaznaczają pola wyboru na liście zainteresowań. Co tydzień wysyłamy e-maile o tematyce zainteresowania do tych członków, którzy wyrazili to zainteresowanie. jednak przechowuję informacje w bazie danych, podczas gdy pracuję z listami i generuję listy adresów e-mail lub manipuluję członkostwem w grupach, złożony wzorzec projektowy wyglądał interesująco. łatwo byłoby wypełnić grupę, a następnie wykonać kilka funkcji agregujących, które mówią… generowanie listy adresów e-mail na podstawie zainteresowań. ale nie jestem pewien, czy widzę inne korzyści. potrzebuję czegoś skalowalnego i elastycznego. myśli?


title: Przepisanie kodu / lepszy wstępny zarys

text: Projekt jednego programisty. Ciągle muszę przepisywać własny kod w trwającym projekcie. Nie jest to błąd, ale za każdym razem, gdy rozszerzam swój program (które wcześniej planowałem), ciągle muszę rozszerzać poprzednie klasy, co powoduje, że przepisuję kod, który wcześniej działał dobrze. Mam testy jednostkowe, więc błędy nie są wprowadzane, ale nadal wydaje się to nieproduktywne i wydaje się marnować czas. Ciągle dodaję funkcje, które początkowo nie były potrzebne, ale stają się potrzebne, gdy projekt staje się coraz bardziej złożony. Czy powinienem kontynuować ten iteracyjny rozwój? Wygląda na to, że z każdą iteracją muszę przepisywać coraz więcej starego kodu, gdy dodawane są nowe funkcje. Czy istnieje lepszy sposób na zarządzanie moim projektem? Wiem (w przybliżeniu), co chcę, aby mój program robił i jak to zrobić. Ponadto jakich narzędzi/filozofii rozwoju powinienem używać do zarządzania jednoosobowymi projektami? Mam bieżącą listę rzeczy do zrobienia (i to wszystko), jak dotąd wykonuje dobrą robotę. Może jakiś abstrakcyjny program do wyznaczania klas?


title: Czy ten wzór ignoruje zasadę SUCHY i czy mogę zmodyfikować wzór, aby pasował?

text: Właśnie zacząłem pracować w firmie i obecnie jesteśmy w dość intensywnym programie szkoleniowym (przez większość dni roboczych), aby przybliżyć nam sposób, w jaki firma robi rzeczy, i przeszkolić nas w VB.NET, wraz z Niektóre c#. Zaczynają migrować w kierunku zmodyfikowanej architektury Model-View-Presenter, w której zdalny dostęp do serwera odgrywa dość dużą rolę. Przykładowy program .NET może wyglądać tak: SomeSolution | +-+- SerwerProjekt | | | +- ServerPracownik.vb | | | +- Server.vb | +-+- Prezenter | | | +- PrezenterPracownik.vb | | | +- Prezenter.vb | | | +- IView.vb | +-+- ViewProject | +- WyświetlPracownik.vb | +- View.vb Omawiane klasy będą klasami pracowniczymi. Podano mi przykład, że `ServerEmployee` miałby najwięcej informacji – pobierając z bazy danych, prawdopodobnie miałby najwięcej atrybutów, takich jak `.FirstName`, `.LastName`, `.MiddleInitial`, ` .PreferredName`, `.HireDate` i wszelkie inne atrybuty obecne w bazie danych. `PresenterEmployee` miałby inne atrybuty, a także atrybut `.FullName`, który być może został wygenerowany w ten sposób: Jeśli pracownik.PreferredName <> String.Empty Then pracownik.FullName = pracownik.PreferredName & " " & pracownik.Nazwisko Else pracownik.FullName = pracownik.FirstName & " " & Employee.MiddleInitial & " " & Employee.LastName End If I na koniec, `ViewEmployee` miałby tylko atrybuty `.FullName` i `.HireDate`. Zostaliśmy poinformowani, że uzasadnieniem tego projektu było to, że jeśli powiemy, że klasa `DataStructures`, do której odwołują się inne klasy, to za każdym razem, gdy klasa DataStruture musi być przebudowana, cały projekt musi zostać ponownie wdrożony (co rozumiem jest dość żmudnym procesem ze względu na pewne decyzje dotyczące infrastruktury). Rozumiem, że nie byłaby to A Good Thing™, ale wydaje się, że jeśli masz kod, który prawdopodobnie niewiele zmieni (dość ogólna superklasa z pewnymi prostymi właściwościami), sensowne byłoby uniknięcie duplikacji kodu. Czy mam rację sądząc, że jest to pogwałcenie zasady DRY? Pierwszą rzeczą, o której pomyślałem, kiedy uczono tego, było „ewww, to trochę pachnie…” Poza (potencjalnie) brakiem konieczności ponownego wdrażania całej aplikacji za każdym razem, gdy zmienia się superklasa, czy jest jakaś korzyść z robienia rzeczy w ten sposób? A jeśli jest zepsuty i chcę spróbować go naprawić, jakie są dobre argumenty na obronę mojego wyboru?


title: Duża luka w moim CV jako programisty Java. Jakie umiejętności są niezbędne do zatrudnienia w tamtych czasach?

text: Z powodów prawnych nie pracowałem dla nikogo przez ostatnie 12 lat. Jestem web developerem Java, a przynajmniej tak mi się wydaje. Przez ten okres pracowałem nad swoim projektem – czymś w rodzaju sieci biznesowej – i wykonałem kilka drobnych prac, więc teraz czuję, że jestem daleko w tyle pod względem moich umiejętności i umiejętności potrzebnych dzisiaj. Zbyt długo ociągałem się na Struts i Hibernate i pomyślałem, że to może być praca dla mojego projektu. Muszę teraz znaleźć pracę, więc spędzam większość czasu na doskonaleniu swoich umiejętności. Moje pytanie brzmi: jakie są obecnie niezbędne umiejętności, które mogłyby przekonać pracodawców do zatrudnienia mnie bez względu na moje przeszłe zatrudnienie lub jego brak. Obecnie jestem na AspectJ, IoC i Spring


title: Struktura poprawnie zaimplementowanego JTable z TableModel i Listeners?

text: Jestem całkiem nowy w Javie i jej JTables i właśnie z tym mam obecnie problemy. Muszę utworzyć GUI, który pokaże mi wyniki zapytania sql, takie jak `SELECT * FROM tblPeople WHERE name='Doe'`. Moim pomysłem było stworzenie JFrame, która wyświetla tabelę JTable ze wszystkimi znalezionymi rekordami. Poza tym muszę również zaimplementować kod do obsługi, gdy użytkownik dwukrotnie klika rekord lub wybiera go za pomocą klawiszy strzałek (dodatkowa funkcja: naciśnięcie `12`(np.) powinno wybrać 12. rekord). Jaki jest najlepszy sposób ustrukturyzowania mojego programu (jakich klas potrzebuję, a zwłaszcza gdzie przechowuję moją logikę)? Wymyśliłem strukturę w następujący sposób: * **Main.java** ("widok") * **SQLConnection.java** * **PeopleTableModel.java** (przechowuje i zwraca tylko dane podane przez przekazany zestaw wyników , "model" dziedziczy po DefaultTableModel) * **PeopleTable.java** (przechowuje w zasadzie całą moją logikę, w tym KeyListener i MouseListener, "kontroler", dziedziczy po JTable) Czy są lepsze sposoby na osiągnięcie moich celów? Jeśli tak, jakie one są?


title: .Architektura wyszukiwarki internetowej i wybór technologii

text: Jestem w trakcie projektowania wyszukiwarki dla witryny asp.net. Witryna korzysta obecnie z Microsoft Indexing Server do indeksowania i wyszukiwania treści, od prostych plików tekstowych po dokumenty MS i pliki PDF. MIS jest również używany do przeszukiwania serwerów plików. System MIS w tandemie z programem Index Server Companion przeszukuje zawartość z witryn zewnętrznych. Zamierzam zastąpić MIS indeksatorem/przeszukiwaczem, który próbuję zbudować. Motywacją do odejścia od MIS jest to, że 1. MSFT zaprzestanie wsparcia MIS w swoich nadchodzących wydaniach Server 2012. 2. Główni dostawcy PaaS nie obsługują systemu MIS. Ponieważ moja platforma jest całkowicie na stosie Microsoft, nie mogę sobie pozwolić (ze względu na problemy z wdrażaniem/konserwacją niż problemy z kosztami) na serwer aplikacji Java. Tym samym Solr, a właściwie SolrNet jest wykluczony. W takim kontekście mam kilka pytań. ### 1.Wybór technologii Przeprowadziłem wstępne badanie i przyjrzałem się Lucene.Net. Wygląda na to, że podczas korzystania z Lucene.Net wystąpiły 2 problemy. Po pierwsze, nie może indeksować treści zewnętrznych. Wydaje się, że nie ma bezpośredniego portu Nutch w .Net. Po drugie, ponieważ jest tylko indeksatorem, nie może analizować różnych typów dokumentów. Parsowanie pozostawia się deweloperowi. Jaki byłby więc najlepszy wybór technologii na platformie .Net, aby osiągnąć indeksowanie i indeksowanie? Czy są dostępne biblioteki .Net typu open source do analizowania dokumentów? ### 2.Wzorzec architektoniczny Czy istnieje jakiś ogólny wzorzec architektoniczny lub najlepsze praktyki, których należy przestrzegać przy projektowaniu takiej wyszukiwarki?


title: Czy istnieje dobrze ugruntowana teoria dotycząca wstecznej i do przodu kompatybilności formatów, języków, gramatyk i słownictwa?

text: Mam znajomego, który ma _specyficzny_ problem z budowaniem sprawy przeciwko użyciu niestandardowego tagu HTML <wrapper> w znacznikach niektórych witryn. Teraz intuicyjnie możemy odpowiedzieć, że użycie takiego tagu jest ryzykowne, ponieważ przyszłe specyfikacje HTML mogą zdefiniować tag wrapper z semantyką kolidującą z jego użyciem na stronie. Możemy również odwołać się do określonej sekcji specyfikacji HTML5, która również odradza stosowanie tagów niestandardowych z tego powodu. I chociaż zgadzam się z wnioskiem, same te argumenty są dla mnie trochę słabe. Czy istnieje jakaś dobrze ugruntowana i sprawdzona teoria w informatyce, z której możemy wyciągnąć ten wniosek? Czy teoretycy języków programowania stworzyli dowody na właściwości wersjonowania słownictwa, czy coś takiego?


title: Obiekty DDD i wartości. Czy zmienne wartości obiektów są dobrym kandydatem dla Non Aggr. Jednostka główna?

text: Oto mały problem Mieć encję z obiektem wartości. Żaden problem. Zamieniam obiekt wartości na nowy, a następnie nhibernate wstawia nową wartość i osieroci starą, a następnie ją usuwa. Ok, to jest problem. Ubezpieczony jest mój podmiot w mojej domenie. Ma kolekcję Adresów (obiektów wartości). Jednym z adresów jest adres pocztowy. Kiedy chcemy zaktualizować adres pocztowy, powiedzmy, że kod pocztowy był błędny, zgodnie z doktryną pana Evansa, musimy wymienić stary obiekt na nowy, ponieważ jest on niezmienny (obiekt wartości, prawda?). Ale nie chcemy usuwać wiersza, ponieważ PK tego adresu jest FK w tabeli MailingHistory. Tak więc, podążając za doktryną pana Evansa, jesteśmy tutaj dość mocno przerżnięci. Chyba że zrobię mój adres Entities, więc nie muszę go „zamieniać” i po prostu aktualizować jego członka kodu pocztowego, jak za starych dobrych czasów. Co byś mi zaproponował w tym przypadku? Tak jak ja to widzę, ValueObjects są przydatne tylko wtedy, gdy chcesz zahermetyzować grupę kolumn tabeli bazy danych (komponent w nhibernate). Wszystko, co ma identyfikator trwałości w bazie danych, lepiej jest uczynić z niego Entity (niekoniecznie zagregowanego katalogu głównego), aby można było aktualizować jego elementy członkowskie bez ponownego tworzenia wykresu całego obiektu, szczególnie jeśli jest to obiekt głęboko zagnieżdżony. Czy zgadzasz się? Czy pan Evans pozwala mieć zmienny obiekt wartości? A może zmienny obiekt wartości jest kandydatem na Entity? Dziękuję


title: Jak ważne są testy jednostkowe w tworzeniu oprogramowania?

text: Testujemy oprogramowanie, testując wiele przypadków we/wy, więc programiści i analitycy systemów mogą otwierać recenzje i testować swój kod w określonym czasie (np. 1 tydzień). Ale kiedy ma do czynienia z wydobywaniem informacji z bazy danych, jak rozważyć przypadki i odpowiednią metodologię na początek? Chociaż jest to bardziej prawdopodobne, że będą to studia przypadków, ponieważ testy jednostkowe zależą od projektu, w który zaangażowaliśmy się, który jest zbyt konkretny i szczególny przez większość czasu. Jaki jest ogólny przegląd kroków i środków ostrożności dotyczących testowania jednostkowego?


title: Czy jest różnica między argumentami a parametrami?

text: Może to wyglądać tak: Parametr oznacza z POV wywołującego, a argumenty oznaczają wewnątrz procedury lub odwrotnie. A może nie ma różnicy? ## Aktualizacja Po szwedzku mówimy "anropsparametrar" tj. "parametry wywołujące procedurę" i nie mówimy "anropsargument" ("argumenty wywołujące procedurę").


title: łączenie (coś w stylu) Flasha w aplikacji formularza Windows

text: Wiem, że to miejsce, w którym ludzie pytają o radę przy projektowaniu kodu. Jestem trochę dziwny w moich poszukiwaniach kodowania, z jednej strony ludzie przysyłają mi materiały projektowe. Specjalne grafiki i pomysły na to, jak powinny być pokazane w obiegu programu. (Myślę, że projektanci marketingu są trochę za mocni w tym projekcie. Zwykle myślą, że ich zdjęcia są samym programem, ale całe to kodowanie wciąż musi zostać napisane przeze mnie w ciągu 1 tygodnia..) Chcą tweanów grafiki i rotacji itp. Cóż, w skrócie, przypomniało mi to o rzeczach, które widziałem we flashu. Ale o ile wiem, flash jest dla sieci. Ale myślę... ci ludzie najprawdopodobniej używają oprogramowania Adobe, więc mogą je zabezpieczyć jako niektóre formaty Adobe Flash. W końcu chodzi o interfejs dla maszyny Z powodu pewnych ograniczeń sprzętowych muszę to wszystko zrobić w .net 2 na normalnych formularzach win. I na wolnym sprzęcie PC (bez direct10 lub coś takiego). ..znasz animacje tekstowe/slajdy itp. coś, co można połączyć z C# ?.


title: Aplikacja MIT wykonująca polecenie GPL

text: Czy mój projekt na licencji MIT/BSD, projekt open source lub projekt o zamkniętym kodzie źródłowym, który zbuduję i sprzedam, może wykonać polecenie, które jest programem wydanym na licencji GPL? Nie rozprowadzałbym żadnej wersji programu na GPL, ani kodu źródłowego, ani binarnego. Powiedziałbym klientowi/użytkownikowi końcowemu, że musi mieć zainstalowany pakiet/plik binarny przed uruchomieniem programu.


title: Jak mogę poprawić łatwość rozszerzenia mojego oprogramowania?

text: Myślę o tym, jak oprogramowanie takie jak Microsoft Windows rośnie od małych MS-DOS do Windows 7, Adobe Photoshop od pierwszej wersji do wersji CS5. Jakie techniki zostały użyte, aby to osiągnąć? Czy rozszerzyli swoje oprogramowanie z istniejącego oprogramowania lub przeprojektowali do następnej wersji? A może już solidnie zaplanowali swoje oprogramowanie, zanim je zbudowali? Ciężko jest mi rozszerzać moją aplikację/oprogramowanie, gdy potrzebuję dodać nowe funkcje i robi to bałagan z innymi istniejącymi funkcjami. Jak mogę poprawić rozszerzalność mojego oprogramowania, aby móc łatwo dodawać nowe funkcje do oprogramowania?


title: Jak radzić sobie z logowaniem społecznościowym

text: W mojej nowej aplikacji internetowej zamierzam zezwolić na logowanie społecznościowe przez Twitter (być może), Facebook i Google i szukam najlepszego sposobu, aby to zrobić. Właściwie używam Railsów z Devise + Omniauth i to jest problem: **Czy powinienem poprosić użytkownika o wybranie hasła, aby mógł się zalogować bez sieci społecznościowej?** **A może użytkownik powinien mieć możliwość ustawienia hasło, jeśli chce (na przykład podczas edytowania swojego konta?)** Drugi sposób wydaje się najlepszy, ale ponieważ Twitter nie zapewnia adresu e-mail użytkownika, a google nie udostępnia nazwy użytkownika, prawdopodobnie będę musiał poprosić użytkownika o nazwa użytkownika/adres e-mail, kiedy się loguje, więc w takim razie mogę również poprosić o hasło... co o tym myślisz?


title: Jak ważna dla programisty jest obecność w sieci?

text: Zauważyłem coraz więcej wzmianek (zarówno w postach tutaj, jak i w rzeczywistych opisach stanowisk) o "portfolio" programistów - zazwyczaj ich publicznych profilach w serwisach takich jak ten, GitHub itp. Jak ważne jest to i czy firmy (startupy) w szczególności) odrzucić (lub natychmiast odrzucić, nawet bez rozmowy kwalifikacyjnej) innych wybitnych kandydatów, którzy nie są obecni w Internecie? Osobiście wolę zachować bardzo niski profil w Internecie. Moje nazwisko tutaj nie może mnie zidentyfikować i mam inne uchwyty do innych witryn. Mam bardzo spartańską (i całkowicie prywatną) stronę na Facebooku. Sam koduję, ale kod znajduje się w lokalnych repozytoriach. Ogólnie im mniej informacji o mnie w internecie, tym lepiej. Widziałem projektanta, który potrzebuje jakiegoś portfolio online, ale dla programisty, czy to naprawdę duży negatyw podczas poszukiwania pracy?


title: Po co tworzyć drzewo Huffmana na postać zamiast węzła?

text: Na potrzeby szkolnego zadania mamy zrobić implementację Java kompresora/dekompresora przy użyciu algorytmu Huffmana. Trochę o tym czytałem, szczególnie ten samouczek C++: http://www.cprogramming.com/tutorial/computersciencetheory/huffman.html W moim programie myślałem o posiadaniu **Węzłów**, które mają następujące właściwości: * Całkowita częstotliwość * Charakter (jeśli liść) * Prawe dziecko (jeśli istnieje) * Lewe dziecko (jeśli istnieje) * Rodzic (jeśli istnieje) Tak więc podczas budowania drzewa Huffmana jest to tylko kwestia połączenia węzła innym itp. Jednak trochę myli mnie następujący cytat (podkreślenie moje): > Po pierwsze, **każda litera zaczyna się jako część własnego drzewa**, a drzewa są > uporządkowane według częstotliwości litery w oryginalnym ciągu. Następnie dwie > najrzadziej używane litery są łączone w jedno drzewo, a częstotliwość > tego drzewa jest ustawiana jako połączona częstotliwość dwóch drzew >, które łączy ze sobą. Moje pytanie: dlaczego powinienem utworzyć drzewo na literę, a nie tylko węzeł na literę, a następnie wykonać linkowanie później? Nie zacząłem kodować, tylko najpierw uczę się algorytmu, więc chyba brakuje mi ważnego szczegółu. Co to jest?


title: Jak wypełnić szablon licencji BSD dla wielu posiadaczy praw autorskich?

text: Jestem zaangażowany w projekt open source z wieloma właścicielami praw autorskich. Projekt jest licencjonowany na podstawie 3-klauzulowej licencji BSD. Niestety, poszczególne pliki kodu nie zawierają odniesienia do ich pierwotnych właścicieli (żadnych nagłówków praw autorskich), ale dla projektu jako całości dostarczany jest pojedynczy plik LICENSE.txt, który zawiera tekst licencji BSD. Projekt zawiera również osobny plik, który identyfikuje wszystkich posiadaczy praw autorskich. Zmagam się jednak z pytaniem pragmatycznym: pierwsza linia licencji BSD ma identyfikować właściciela praw autorskich: Copyright (c) <rok>, <właściciel praw autorskich> W naszym przypadku nie ma jednego właściciela praw autorskich (przynajmniej nie dla projektu jako całości). Co więc powinienem tu umieścić, praktycznie mówiąc? Oczywiście nie mogę tego pominąć, ponieważ sama licencja odnosi się do zachowania „powyższej informacji o prawach autorskich”. Czy istnieje zalecany sposób/format, aby wymienić tutaj wszystkich posiadaczy praw autorskich, a może odwołać się do zewnętrznej listy posiadaczy praw autorskich? Nawiasem mówiąc, mówimy o 10 lub więcej współpracownikach, niektórzy z nich to osoby prywatne, niektóre firmy, więc nie jest to krótka lista. Przyjrzałem się, jak robią to niektóre inne projekty (np. Linux), ale większość z nich używała GPL, która nie zawiera w licencji bitu `<właściciel praw autorskich>` - i nie udało mi się znaleźć projektu, który używa BSD i ma wielu właścicieli.


title: Jak przywrócić zespół na właściwe tory w SCRUM/Agile?

text: _Była firma tworząca oprogramowanie. Przyjęli SCRUM jako zwinną metodę dla całego działu rozwoju, w tym. programiści, testerzy i analitycy. W pierwszych miesiącach pracował dla nich wspaniale. Jednak później sprawy zaczęły się odwracać, entuzjazm osłabł i ludzie powoli wracali do swoich zwykłych nawyków. Sprint trwał 6-8 tygodni, codzienne stand-upy stały się cotygodniowymi aktualizacjami statusu przy stole z paradą zliczania błędów, scrum master stał się tylko odznaką wymienianą między członkami zespołu jak gorący ziemniak, właściciel produktu odłączył się i stracił własność zaległości, i tak dalej._ Moje pytanie do was, koledzy praktykujący Agile, jak odzyskać zasady SCRUM w takiej sytuacji? Co mogli zrobić członkowie zespołu, którzy nadal wierzyli i troszczyli się o to? Jakie są najlepsze kroki, jakie powinien podjąć kierownik ds. rozwoju w takiej sytuacji, aby przywrócić zespół na właściwe tory w SCRUM/Agile?


title: Jak powinienem „zagłębić się” jako programista?

text: Obecnie jestem web developerem full-stack pracującym głównie w Ruby/Rails/Javascript. Języki, których używam na co dzień (ruby, css, javascript, php) są świetne, ale są to bardzo dynamiczne języki wysokiego poziomu. Chciałbym nauczyć się języka niższego poziomu, najlepiej wpisanego statycznie, bez zarządzania pamięcią, który przybliża mnie do podstawowej architektury. Chciałbym jednak podejść do tego języka przez pryzmat web developera i mam nadzieję, że wykorzystam zdobytą wiedzę, aby uczynić mnie lepszym web developerem. Jakakolwiek rada?


title: dużo obrazków i ajax, czy lepsze rozwiązanie?

text: Mam kontrolkę, w której użytkownik może wybrać wartość dla osi x i y z 2 list rozwijanych, a następnie jest siatka 4 na 4 (obraz), która pokaże, czemu odpowiadają ich wybory (aktualizacja dynamicznie). Tak więc, jeśli siatka to: a b c d e f g h i j k l m n o p Jeśli użytkownik wybierze 2 dla wiersza (kolumna jest na razie pusta), `e f g h` powinno się podświetlić (używając konturu). Jeśli następnie wybiorą 3 w kolumnie, podświetlone powinno być tylko „g”. I tak dalej dla każdej kombinacji. Wiem, że mogę to rozgryźć, tworząc 25 oddzielnych obrazów (po jednym dla każdego kwadratu + 4 wiersze + 4 kolumny + oba null), a następnie załadować odpowiedni obraz za pomocą ajax, ale moje pytanie brzmi, czy istnieje lepszy sposób lub jakiś rodzaj dynamicznego rozwiązania, w którym mogę narysować obraz lub nałożyć inny obraz w inteligentny sposób?


title: Czym jest „chmura”? Co mam powiedzieć, gdy ktoś zapyta, czy moja usługa internetowa jest „w chmurze”?

text: > **Możliwy duplikat:** > Co to jest „chmura” i jaki ma związek z rozwojem? Najpierw trochę kontekstu: nie rozumiem, o co ludzie pytają, gdy pytają „To w chmurze?” Oto przykład. Tworzę "stronę internetową" z php, która jest dwiema stronami hostowanymi na dedykowanym Linuksie z uruchomionym Apache. Jeden ma formularz, w którym przesyłasz plik, a drugi oblicza pewne rzeczy na podstawie tego pliku i odkrztusza odpowiedź. Przypuszczalnie można nazwać to również interfejsem API, jeśli istnieje pole wyboru w formularzu, aby określić odpowiedź jako czytelną dla człowieka w porównaniu z XML. Czy to „usługa” „w chmurze”, czy jest to tylko usługa hostowana? Czy Gmail jest „w chmurze”? Czy chmura amazon S3 jest „w chmurze”, czy jest to „chmura” czy tylko „chmura”? W tym momencie jestem prawie pewien, że „w chmurze” to marketingowy żargon dla „w internecie”. Czy jest w tym coś więcej? Czy powinienem zapytać o to na english.stackexchange? Aby odróżnić moje pytanie od Czym jest „chmura” i jak ma się do rozwoju? Pytam konkretnie, jak odpowiedzieć na pytanie, które ciągle mi zadaje „Czy to jest w chmurze?” bez powiedzenia „To, o co prosisz, jest bez znaczenia”. biorąc pod uwagę przykład mojej małej usługi internetowej/API. Czy każda strona internetowa jest „w chmurze”?


title: Witryny freelancerów i udostępnianie kodu źródłowego personelowi

text: Jak bezpieczne jest przesyłanie plików projektów za pośrednictwem popularnych serwisów freelancerskich? Na przykład ich pracownicy/administratorzy mają nieograniczony dostęp do ton bardzo wartościowych źródeł, po co więc wrzucać tam coś wartościowego?


title: Ewolucja mojego projektu MVC z nową złożonością interfejsu użytkownika

text: Mam aplikację oprzyrządowania pulpitu w MVC. Obecnie miałem 2 wersje aplikacji, a więc 2 widoki i 2 kontrolery, każdy ze wspólnym kodem w klasie bazowej. Widoki reagują bezpośrednio na zdarzenia wysyłane przez model, a kontroler ma kolejkę komunikatów do łączenia akcji użytkownika z modelem. Warto zauważyć, że kolejka komunikatów jest wspólna dla dwóch kontrolerów. W tych dwóch wersjach logika UI jest bardzo prosta, polega głównie na reagowaniu na przyciski, przekazywanie parametrów do kontrolera i . W kolejnej wersji mam kilka zadań związanych z przepływem pracy, więc interfejs użytkownika stanie się bardziej złożony. Chcę też, aby początkowe wersje nadal działały. Gdzie umieścić tę złożoność? Czy powinienem dodać kolejną pętlę wiadomości, która jest pomiędzy? Będzie należeć do kontrolera czy do widoku? Gdzie powinienem umieścić stan mojego przepływu pracy? A może powinienem zbudować inteligentny widok?


title: Młodszy programista wprowadzenie do branży pracy

text: Jestem młodszym programistą w moim drugim doświadczeniu zawodowym, pierwszym korzystającym z PHP z WordPress, a obecnie w Groovy on Grails. Lubię kodować, chodzę na spotkania, aby dyskutować o technologii itp., ale nadal nie rozumiałem, jak zostać prawdziwym profesjonalistą z nastawieniem „know how”. Czytam Clean Coder, autor radzi poświęcić 20 godzin tygodniowo wolnego czasu na naukę nowych technologii i bycie na bieżąco. Nie wydaje mi się to realistyczne, jeśli chcesz mieć trochę życia towarzyskiego, a także zauważyłem, że nauka w pracy, przynajmniej w miejscach, w których pracowałem, nie jest idealna. Brak wsparcia ze strony seniorów dla nowych projektów, brak programowania par i przeglądów kodu, brak szkoleń firmowych, godzinne spotkania techniczne w tygodniu, podczas których seniorzy odchodzą po chwili, ponieważ znają już omawiany temat i tak dalej. Czasem dość trudno utrzymać motywację... Moje pytania brzmią: 1. Czy nasza branża ma tak wyglądać? Czy istnieje prawdziwy zespół pracujący w sensie dzielenia się wiedzą i pomagania juniorom w nabieraniu tempa? 2. Czy mamy uczyć się nowych technologii lub funkcji technologicznych tylko w wolnym czasie? Clean Coder mówi, że piłkarze nie trenują podczas oficjalnych meczów, a nasze godziny pracy są jak oficjalne mecze, powinniśmy po prostu występować i uczyć się w innych momentach. Czy naprawdę tak jest? 3. Jak mogę poprawić swoje umiejętności bez wsparcia? Czy wystarczy czytać książki i wypróbowywać ćwiczenia i może jakieś kata? Przez prawie 5 miesięcy doświadczenia Groovy on Grails w pracy nigdy nie miałem okazji stworzyć niczego od zera, po prostu pracowałem nad istniejącymi problemami, gdzie nawet bardzo trudno było zdobyć wiedzę domenową od starszych deweloperów.


title: Co powinienem zrobić, gdy tak długo utknę w zadaniu?

text: Mój zespół używa Scrum i jesteśmy nowi w tej metodologii. Używam Essential Scrum jako naszej wytycznej, ale jeszcze go nie skończyłem. W rozdziale mówi, że zespół powinien koncentrować się na bezczynnych zadaniach, a nie na bezczynnych pracownikach, z czym się trochę zgadzam. W każdym razie nie mówi (przynajmniej w tym rozdziale), co robić i jak to rozwiązać. Jakie są dobre sugestie dotyczące radzenia sobie z bezczynnymi zadaniami? **Aktualizacja** Bezczynne zadanie w tym kontekście oznacza zadanie, które było w toku znacznie dłużej niż się spodziewamy, na przykład, jeśli szacuje się, że zadanie zostanie zakończone za 2 godziny, ale trwało 6 godzin i nie jest pewne kiedy to się skończy.


title: Stosujesz projekt RESTful do całej witryny?

text: To wszystko może wydawać się bardzo nowe, ale staram się owinąć głowę wokół projektowania strony internetowej, która jest całkowicie RESTful. Rozumiem stosowanie RESTful design do rzeczy takich jak użytkownicy, zdjęcia, wpisy na blogu itp., ponieważ myślę o nich jak o „obiektach”. Ale co ze stroną „o nas”. Co to za zasób? Czy jest to w ogóle zasób w pełnym REST znaczeniu tego słowa? Powiedzmy też, że przechodzę do adresu URL „http://www.example.com/”, o jaki zasób proszę? Zasób indeksu?


title: Czy interfejs REST powinien zawierać identyfikator zapytania jako część odpowiedzi?

text: Obecnie pracuję nad aplikacją na Androida, która odbiera większość wyświetlanych danych z interfejsu REST. Najpierw proszę o informacje dla firmy, która zawiera listę identyfikatorów sklepów. Z każdym identyfikatorem mogę poprosić o szczegóły dotyczące tego sklepu. W ramach mojej aplikacji mogę aktualizować godziny otwarcia sklepu i odsyłać je z powrotem na serwer. W tym celu oczywiście potrzebuję identyfikatora sklepu, aby poinformować serwer, który sklep ma zaktualizować. Teraz moje pytanie: obiekt JSON zwrócony przez {SERVER}/StoreDetails/{ID} nie zawiera identyfikatora sklepu. Muszę więc najpierw pobrać plik JSON, przeanalizować go, a następnie ręcznie dodać identyfikator sklepu do obiektu - co moim zdaniem niepotrzebnie komplikuje moją logikę, a także moje obiekty modelu, które teraz albo potrzebują settera pewnego rodzaju kopii/aktualizacji konstruktora, gdy w przeciwnym razie mogłyby być całkowicie niezmienne... Czy byłoby/było rozsądne uwzględnienie identyfikatora sklepu w zwróconym obiekcie JSON, czy jest to uważane za zbędne i złą praktyką?


title: „Publiczne interfejsy API są wieczne: tylko jedna szansa, aby zrobić to dobrze”?

text: W książce o systemie operacyjnym przeczytałem właśnie, że „Publiczne interfejsy API są wieczne: tylko jedna szansa, aby zrobić to dobrze”. Czy to prawda? Czy ma to zastosowanie tylko w interfejsach API systemów operacyjnych lub innych interfejsach API? Na przykład, czy dotyczy to interfejsów API aplikacji na Androida, takich jak Tasker, Locale i Pushover?


title: Jaki jest najlepszy sposób na przechowywanie tabeli w C++

text: Programuję drzewo decyzyjne w C++ przy użyciu nieco zmodyfikowanej wersji algorytmu C4.5. Każdy węzeł reprezentuje atrybut lub kolumnę zestawu danych i ma dzieci dla każdej możliwej wartości atrybutu. Mój problem polega na tym, jak przechowywać zestaw danych uczących, mając na uwadze, że muszę użyć podzbioru dla każdego węzła, więc potrzebuję szybkiego sposobu na wybranie tylko podzbioru wierszy i kolumn. Głównym celem jest zrobienie tego w możliwie jak największej ilości pamięci i czasu (w tej kolejności priorytetów). Najlepszym sposobem, o którym myślałem, jest posiadanie tablicy tablic (lub std::vector) lub czegoś podobnego, a dla każdego węzła ma listę (tablicę, wektor itp.) lub coś z „kolumną, linią” (prawdopodobnie krotka) pary, które są ważne dla tego węzła. Teraz powinien być lepszy sposób na zrobienie tego, jakieś sugestie? **AKTUALIZACJA:** Potrzebuję czegoś takiego: Na początku mam te dane: Paryż 4 5,0 Prawdziwy Nowy Jork 7 1,3 Prawdziwy Tokio 2 9,1 Fałsz Paryż 9 6,8 Prawdziwy Tokio 0 8,4 Fałsz Ale dla drugiego węzła po prostu potrzebuję tych danych: Paryż 4 5,0 Nowy Jork 7 1,3 Paryż 9 6,8 A dla trzeciego węzła: Tokio 2 9,1 Tokio 0 8,4 Ale z tabelą milionów rekordów z setkami kolumn. Mam na myśli przechowywanie wszystkich danych w macierzy, a następnie dla każdego węzła zachowuj informacje o bieżących kolumnach i wierszach. Coś takiego: Paryż 4 5,0 Prawdziwy Nowy Jork 7 1,3 Prawdziwy Tokio 2 9,1 Fałszywy Paryż 9 6,8 Prawdziwy Tokio 0 8,4 Fałszywy Węzeł 2: kolumny = [0,1,2] wiersze = [0,1,3] Węzeł 3: kolumny = [0,1,2] wierszy = [2,4] W ten sposób w najgorszym przypadku muszę tylko zmarnować size_of(int) * (liczba_kolumn + liczba_wierszów) * node To o wiele mniej niż posiadanie niezależnej macierzy danych dla każdego węzła.


title: Strategia dla strony internetowej z międzynarodowymi ciągami

text: Jakie rzeczy należy wziąć pod uwagę w przypadku witryny internetowej zawierającej ciągi międzynarodowe, na przykład mieszany chiński uproszczony i angielski. UTF8 wydaje mi się naturalnym wyborem, łącznie z metatagiem. Mimo to niektórzy użytkownicy mogą widzieć tylko białe pola. Jakie jest najlepsze rozwiązanie, aby sobie z tym poradzić? Obecnie myślę o zapewnieniu alternatywnego renderowania opartego na obrazie, a nawet uczynieniu go domyślnym. Ale IMHO to wydaje się słabym rozwiązaniem. Lub mógłbym powiedzieć użytkownikowi, które kombinacje OS/przeglądarki działają, ale taka lista prawdopodobnie nie miałaby końca. Aktualizacja: jest to witryna do nauki języka chińskiego, większość użytkowników nie odwiedzała wcześniej chińskich witryn


title: Przechowywanie dokumentów w DMS

text: Potrzebuję Waszych opinii i sugestii dotyczących przechowywania dokumentów w systemie DMS. Myślę, że DMS powinien zapisywać własne kopie dokumentów, a nie ich oryginalną ścieżkę na dysku. Tak więc DMS powinien mieć własną przestrzeń do pisania. Ale co ze sposobem ich przechowywania? Czy mają własne rozszerzenie inne niż oryginalne? A co z algorytmem, który je przechowuje? A co z algorytmem, który je pobiera? Co sugerujesz??


title: Wartości domyślne - dobre czy złe?

text: Pytanie o wartości domyślne w ogóle - domyślne wartości funkcji zwracanych, domyślne wartości parametrów, domyślna logika, gdy czegoś brakuje, domyślna logika obsługi wyjątków, domyślna logika obsługi warunków brzegowych itp. Przez długi czas uważałem, że wartości domyślne są "czyste zło", coś, co "maskuje katastrofę" i skutkuje bardzo trudnymi do znalezienia błędami. Ale ostatnio zacząłem myśleć o wartościach domyślnych jako o rodzaju długu technicznego… co nie jest zwyczajnie złą rzeczą, ale czymś, co może zapewnić „krótkoterminowe finansowanie”, abyśmy mogli przetrwać projekt (jak wielu z nas było nas stać kupić dom bez zaciągania kredytu hipotecznego?). Kiedy mówię „krótkoterminowy” – nie mam na myśli – „najpierw zrób coś szybko i zrefaktoryzuj to później, zanim trafi do produkcji”. Nie - mówię o poleganiu na zakodowanych na sztywno wartościach domyślnych w oprogramowaniu produkcyjnym. To prawda - może to spowodować pewne problemy, ale co, jeśli spowoduje to tylko jeden problem w ciągu całego roku. Znowu – mówię tutaj o „przeciętnym” oprogramowaniu głównego nurtu (nie oprogramowaniu dla elektrowni jądrowej) – przeciętnej witrynie internetowej lub aplikacji interfejsu użytkownika dla oprogramowania księgowego, co oznacza, że nie chodzi o życie ludzi ani miliony dolarów . Ponownie, z mojego doświadczenia, użytkownicy biznesowi woleliby żyć z oprogramowaniem, które „jakoś działa”, niż czekać na idealne. A użycie wartości domyślnych bardzo pomaga, jeśli tworzysz oprogramowanie w stylu RAD. Ale znowu – najdłuższe sesje debugowania, jakie spędziłem, były spowodowane błędami wprowadzonymi przez wartość domyślną, która albo przestała być „domyślną” po drodze, albo dlatego, że mały podsystem został niedawno zaktualizowany i w wyniku tej aktualizacji nie poprawnie obsłużyć wartość domyślną (np. pusta lista vs null lub null string vs pusty ciąg). Więc moje pytanie brzmi - czy wartości domyślne są dobre czy złe. A jeśli są to dług techniczny – jak zmierzyć, ile możesz pożyczyć, żeby stać Cię na spłatę? Naprawdę doceniłbym każdy wkład. Twoje zdrowie. EDYCJA: Jeśli używam wartości domyślnych jako sposobu na skrócenie rogów podczas opracowywania - i jeśli cięcie rogów powoduje błędy i problemy - jaka jest metodologia, aby naprawić te problemy?


title: Najbardziej odpowiednia struktura danych dla ciągu w pamięci -> konwersja int dla ciągów o zmiennej długości

text: Mój projekt obejmuje walidację i normalizację adresów e-mail w tym formacie [część_użytkownika]@[część_domeny].[tld] Po sprawdzeniu poprawności składniowej adresu sprawdzane jest, czy istnieje [tld], w przeciwnym razie walidacja nie powiedzie się. Po sprawdzeniu, [częśćużytkownika] i [częśćdomenowa] są znormalizowane do 32-bitowego identyfikatora numerycznego o nazwie [partid] (po jednym dla każdej części), partid i ciąg części są trwale przechowywane na dysku po wykryciu nowych ciągów. 4 bajty wydają się najbardziej sensowne dla każdego, ponieważ 3 bajty to za mało (obecnie jest około 200 milionów zarejestrowanych nazw domen). Aby szybko przetworzyć listy nowych e-maili, używałem tablic Judy (dokładnie JudySL, http://judy.sourceforge.net/doc/index.html) , gdzie ciąg części jest mapowany na identyfikator części. Użyłem tablic Judy Array, ponieważ wiem, jak ich używać i ogólnie działają dobrze, chociaż nie są bezpieczne wątkowo, co jest niewielką wadą (używam muteksów, aby to obejść). Nie ma kolizji, które dostałbym z tablicą mieszającą... co nieco zmniejsza złożoność. Jednak wydaje się, że zajmują znacznie większą część pamięci, niż bym chciał, więc moje pytanie brzmi, co sugerowałbyś jako lepszą metodę przechowywania? Przykładowy przypadek: * system 64-bitowy (bazujący na Debianie) * 150 000 000 "części", średnio około 8 bajtów każda, łącznie 12 bajtów z uwzględnieniem części * ~1,67 GB na te dane same w sobie * ~5,1 GB używane przez Judy * Być może warto zauważając, że wiadomości e-mail są oceniane po przekonwertowaniu do formatu punycode. * Dane wejściowe będą pojawiać się na listach różniących się między 10 tys. i wyszukiwania. Więc potrzebuję około 3 razy więcej pamięci niż miejsca na dysku, aby przekonwertować [~8-bajtowy-ciąg] na int. Czy są jakieś lepsze(*) struktury danych, które powinienem wziąć pod uwagę? (* lepiej, mam nadzieję na dość szybkie, z mniejszym zużyciem pamięci i najlepiej z czymś napisanym wcześniej, jak biblioteka...) **Aktualizuj** TL;DR mojego oryginalnego pytania... konwertowanie zmiennej długość łańcucha do 32-bitowej INT. Ściśle mówiąc, część użytkownika rozróżnia wielkość liter, ale z tego, co rozumiem, standardowa implementacja polega na ignorowaniu wielkości liter. W takim przypadku (bez gry słów) istnieje 56 poprawnych znaków w części domeny zakodowanej metodą puny lub wartość 6 bitów. Myślę, że mogę poświęcić 1-bit, aby wskazać bezpośrednią konwersję string->int bez tabeli przeglądowej, która również umożliwi konwersję z powrotem. Bit zostanie włączony, gdy może to nastąpić, i zapobiegnie kolizjom z wyszukiwaniami, pozostawiając 31 bitów na dane i 2^31 identyfikatorów dla wszystkich innych części domeny, które nie pasują. Bawiłem się kodami o stałej długości 4-5-6 bitów opartymi na najmniej częstym znaku, ale kodowanie Huffmana wydaje się (oczywiście?) Wygrywać na dłuższą metę i unika drugiego przejścia ciągu wejściowego. Oto kilka danych opartych na rozkładzie znaków na tych 150-metrowych częściach. http://pastebin.com/DTrUWSna Huffmanowi udaje się ścisnąć yahoo, gmail, a nawet hotmail do 31 bitów, co jest doskonałe. W ten sposób można odwzorować 6,1% wszystkich części. Przy tym samym kodowaniu huffmana dalsze 70,5% można zmapować do 63 bitów, co pozwoliłoby na ustaloną długość listy int klucz->wartość. Powinno to zaoszczędzić na pamięci (spróbuję zdać raport) To pozostawia mniej niż 25% wszystkich części do zmapowania. Ten nowy układ powinien bardzo pomóc w oszczędzaniu pamięci, dzięki za dotychczasowe sugestie.


title: Nazywanie metody „zrób X w razie potrzeby”

text: Jaki jest dobry sposób na nazwanie metody, która sprawdza, czy X musi zostać zrobione i czy X to robi, jeśli to konieczne? Na przykład, jak nazwać metodę, która aktualizuje listę użytkowników, jeśli zalogowali się nowi użytkownicy? `UpdateListIfNeeded` wydaje się zbyt długa, podczas gdy prosta `UpdateList` sugeruje, że za każdym razem wykonywana jest prawdopodobnie kosztowna i niepotrzebna operacja. `EnsureListUpdated` również jest wariantem. C# ma wzorzec `bool TryXXX(args, out result)` (np. `int.TryParse(str, out num)`), aby sprawdzić, czy X jest **możliwe** i to zrobić, ale jest to nieco inne.


title: Czy mogę używać kodu we własnych projektach, które napisałem dla kogoś innego?

text: W przeszłości zrobiłem dla kogoś projekt jako freelancer, w którym napisałem kilka filtrów graficznych. Nic nadzwyczajnego, a projekt dla nich bardzo, bardzo tani. Zastanawiałem się, czy jeśli chciałbym ich użyć w moim projekcie, czy prawnie/etycznie będę mógł to zrobić? Jeśli nie mógłbym użyć dokładnego kodu, czy mógłbym przynajmniej użyć ogólnych danych, których użyłem do ich stworzenia. (Wymodelowałem filtry w Photoshopie, a następnie zakodowałem duplikat filtra w języku programowania.) Moja konkretna praca została wykonana przez freelancer.com i nie mieliśmy żadnych specjalnych warunków.


title: Złożoność w zagnieżdżonych pętlach

text: Przedmowa: * W tym poście dokonam powszechnego pomylenia „O(n)” i „Theta(n)” jako notacji złożoności. * Napiszę pseudokod, aby porozmawiać o algorytmach, używając dowolnej notacji, która mi się podoba. * * * Wiem, jeszcze jedno pytanie o zagnieżdżone pętle i złożoność. Niedawno napisałem zagnieżdżony algorytm, który działałby jako wąskie gardło bardziej złożonej aplikacji. Wyglądało to jakoś tak: while(firstLoopRunning) { foreach(element w myArray) { doSomeAction(element); } } Moje bystre oko doprowadziło mnie do wniosku, że skoro doSomeAction jest w `O(1)`, algorytm musiał być w `O(n²)`. Wiem jednak, że zagnieżdżone pętle mogą mieć różną złożoność. Na przykład w `O(n.log(n))`: for(i in 0..n) // n jest stałe w tej pętli for(j in 0..i) // j wzrasta do i, a nie do stałego print(j); Potem pomyślałem, hej, wiem, że myArray ma maksymalną długość. W tym konkretnym przypadku _wiem_ od samego początku, że w myArray nigdy nie będzie więcej niż 8 elementów, więc algorytm może wyglądać tak: while(firstLoopRunning) { // Zróbmy to w Javie, myArray będzie w rzeczywistości próbą ArrayList { doSomeAction(mojatablica.get(0)); doSomeAction(mojaTablica.get(1)); doSomeAction(mojatablica.get(2)); doSomeAction(mojatablica.get(3)); doSomeAction(mojatablica.get(4)); doSomeAction(mojatablica.get(5)); doSomeAction(mojatablica.get(6)); doSomeAction(mojaTablica.get(7)); } catch(ArrayOutOfBoundsException ex) { // To tylko leniwy sposób na uniknięcie sprawdzania, czy indeks istnieje } } I voilà! Oto w „O(n)”! Co więcej, wiem na pewno, że kompilatory zwykle przekształcają _fałszywe_ pętle, takie jak ta: for(i in 0..8) // nie jest to pętla someCall(i); w sekwencję połączeń. Doprowadziło mnie to do pierwszego wniosku: > Iteracja po tablicy, której długość będzie miała znaną skończoną górną granicę > znajduje się w O(1). Myślę, że mam rację co do tego (aka: popraw mnie, jeśli się mylę). Z drugiej strony pracujemy z danymi skończonymi, a cały sens teorii złożoności polega na pracy na danych teoretycznie nieskończonych. Użyjmy więc innego klasycznego przykładu: iterujemy po kwadratach w siatce (=~ tablica dwuwymiarowa), więc oczywiście algorytm `O(n²)`. A gdyby tak umieścić wszystkie kwadraty na jednej liście i zmienić to: // Algorytm O(n²) nad myGrid[][] for(i in myGrid) for(j in myGrid[i]) yieldAction(myGrid[ i][j]) do tego // algorytmu O(n) przez myFlatGrid[] for(i in myFlatGrid) yieldAction(myFlatGrid[i mod rowLength][j]) Zasadniczo to samo, ale z różną złożonością, ale żadna pętla nie ma fakt został osiągnięty. Przyznaję, że siatka może rosnąć w obu wymiarach, więc zmienna jest naprawdę kwadratowa, ale w pewnym sensie można ją zdecydowanie traktować liniowo (nawet jeśli nie warto). Ale chyba czegoś mi brakuje. Jaki ma sens, że jeśli trochę przekręcimy dane, mogę zmienić złożoność algorytmu z teoretycznego punktu widzenia, mimo że wykonywana jest dokładnie taka sama liczba operacji?


title: Jakie dane są dostępne na temat kodowania kowboja?

text: nie jestem programistą; Jestem niezależnym pisarzem i badaczem. Mam klienta, który szuka statystyk dotyczących pewnych „zagrożeń” dla rynku aplikacji w ogóle (nie konkretnego sklepu z aplikacjami). Jednym z nich jest kodowanie kowbojskie: w szczególności chce zobaczyć liczby dotyczące liczby aplikacji, które nie działały zgodnie z przeznaczeniem / uległy awarii / zostały usunięte z powodu błędów popełnionych przez, w istocie, niestaranne kodowanie. Zwróć uwagę, że nie jestem tutaj, aby dyskutować o zaletach kodowania kowbojskiego i czy jest to niechlujne. Czy są jakieś dane dotyczące tego typu rozwoju?


title: Jak wykonać testy jednostkowe, aby upewnić się, że procedura składowana usuwa wiersz z bazy danych?

text: Jestem nowy w testowaniu jednostkowym i potrzebuję pomocy w następujących kwestiach. Stworzyłem mały projekt, który ma mi pomóc nauczyć się robić testy jednostkowe. Funkcjonalność jednego z formularzy w mojej aplikacji usuwa użytkownika z tabeli User (i innych wierszy w tabelach mapowania). Obecnie test jednostkowy, który stworzyłem, aby przetestować to ustawia wymagane obiekty, a następnie wywołuje metodę reguł biznesowych (przekazywanie identyfikatora użytkownika), która wywołuje metodę dostępu do danych w celu wykonania procedury składowanej, która usuwa wiersze w tabelach. Czy to właściwa metoda sprawdzenia, czy coś zostało pomyślnie usunięte? Czy metoda testu jednostkowego / konfiguracji powinna najpierw wstawić jakieś dane testowe, które test jednostkowy następnie usuwa?


title: Automatycznie aktualizować zakres dat praw autorskich od git?

text: Jak piszę, jesteśmy za 10 dni w 2012 roku. Założę się, że wielu programistów edytuje ciąg praw autorskich na górze swoich plików źródłowych do czegoś takiego: // Copyright 2008, 2010-2012 Some Company Unlimited Twój system kontroli wersji wie, kiedy pliki zostały zmodyfikowane, więc z pewnością może pomóc napisać lub przepisać te ciągi. Więc moje pytanie: czy istnieje skrypt, który może badać logi git dla każdego pliku i wyprowadzać (lub lepiej wstawiać) taki ciąg znaków? Używam git, więc jest to najważniejsze, ale daj mi znać, czy takie skrypty istnieją dla innych systemów. **Aktualizacja:** Potrzebujemy skryptu, który to zrobi: * Przeszukuje wszystkie pliki źródłowe w naszej kopii roboczej * Lokalizuje istniejący ciąg praw autorskich i identyfikuje lata, np. 2007,2009-2011 to {2007, 2009, 2010, 2011} * Dla każdego roku, który nie jest wymieniony, zróżnicuj między 1 stycznia a 31 grudnia (lub dzisiaj, jeśli bieżący rok). Sprawdź diff i zdecyduj, czy zasługuje na wzmiankę w ciągu dotyczącym praw autorskich * Wstaw nowy ciąg dotyczący praw autorskich.


title: Co oznacza dla SVN „zanieczyszczanie lokalnego drzewa źródłowego”?

text: Czytam "Professional Team Foundation Server 2010" autorstwa Wrox, a na liście zalet/wad, powiedział: "Podobnie jak CVS, SVN korzysta z katalogów .svn wewnątrz folderów źródłowych do przechowywania stanu lokalnej kopii roboczej i aby umożliwić synchronizację z serwerem. Może to jednak powodować zanieczyszczenie lokalnego drzewa źródłowego i powodować problemy z wydajnością w przypadku bardzo dużych projektów lub plików”. Co oznacza fragment o zanieczyszczeniu? Używam SVN do projektów C# i ASP.NET od dłuższego czasu i nie napotkałem żadnych problemów. Na co prawdopodobnie ten cytat uważa, że powinienem był uważać?


title: Przeciągnij i upuść projekt aplikacji

text: Mam nadzieję, że uda mi się stworzyć aplikację typu mind-mapping, która musi mieć centralną przestrzeń roboczą, w której będzie przechowywana mapa. Użytkownicy powinni mieć możliwość przeciągania elementów (takich jak prostokąty, teksty itp.) z kontenera do obszaru roboczego. Ważne jest to, że gdy użytkownik przeciąga element do obszaru roboczego, _element powinien poruszać się myszą, **nie** tylko tekst._ Szukam czegoś w rodzaju aplikacji webowych LucidChart, Cacoo, MindMeister , itp. Czy można to zrobić w Javie bez zbytniego wysiłku? A jeśli tak, jaki jest projekt aplikacji (algorytm)? Przeszukałem wiele zasobów, ale znalazłem tylko sposoby na przeciąganie tylko tekstu, obrazów lub tym podobnych. Nie cały sam element. Byłoby jeszcze lepiej, gdybym mógł przeciągnąć cały JButton, aby użytkownicy mogli tworzyć mapę JButton. Przepraszam, jeśli to nie jest miejsce, aby to opublikować (czy mam to opublikować w StackOverflow czy tutaj?).


title: Safari dla systemu Windows nie pokazuje, że mój iPad jest podłączony

text: Chcę sprawdzić jakiś kod na iPadzie i włączyłem menu programisty na safari (wersja dla systemu Windows). Jednak moje menu programistyczne safari nie wykrywa iPada podłączonego do niego przez usb... Wersja iPada ios - 6 Wersja Windows - 7 Wersja zainstalowanego Safari - 5.1.7 Jak to zrobić ?


title: Słabe korzystanie z SVN - czy Mercurial jest odpowiedzią?

text: W pracy używamy SVN, ale tylko z nazwy. Nie rozgałęziamy się ani nie łączymy. Przechowujemy dwie kopie repozytorium, z których jedna służy jako gałąź „tag”, która jest kopiowana podczas wdrażania i przechowywana dla poprawek błędów i natychmiastowych funkcji typu „to musi zostać uruchomione jak najszybciej”. Musimy pamiętać o kopiowaniu zmian dokonanych w jednej kopii do drugiej kopii („tułowia”). Mamy kilkanaście projektów w jednym folderze w repozytorium, zamiast je dzielić. Krótko mówiąc, jedyną rzeczą, do której używamy SVN, jest możliwość zatwierdzenia. Cała reszta odbywa się ręcznie. Oceniałem Mercurial; Korzystałem z Gita w przeszłości (jestem jedynym w zespole, który korzystał z DVCS) i szybko wybieram Mercurial. Zastanawiam się nad wprowadzeniem Mercurial do reszty zespołu jako „lepszego sposobu” robienia rzeczy, ponieważ rozgałęzianie jest proste, łączenie jest o wiele łatwiejsze, a my możemy wprowadzać rzeczy lokalnie zgodnie z treścią naszego serca i umieszczać je tylko w centrum oddział, gdy będą gotowe. Otrzymalibyśmy wszystkie zalety SVN (a i tak nie mamy teraz wielu korzyści, ponieważ nikt tak naprawdę nie rozumie SVN) plus dla nowych funkcji, nie musimy mieć ton niewersjonowanych plików, więc jeśli będziemy musieli wycofać mamy przerąbane. Przepływ pracy wydaje się nieco prostszy - musimy tylko pamiętać, że "Commit" jest lokalne, "Push" jest jak commit SVN, a "Pull" jest jak aktualizacja SVN (co zespół nazywa "pobierz najnowsze"). Czy to dobre podejście? Należy pamiętać, że zespół jest bardzo elastyczny i pójdzie na wszystko, co poprawi jakość naszej pracy i ułatwi nam pracę - CIO zapytał mnie nawet, gdy wspomniałem, że nie wykorzystujemy SVN do jego potencjału "Jest jest coś lepszego, co możemy wykorzystać?" więc on też jest na pokładzie.


title: Problem z hasłem do bazy danych podczas używania GIT do zarządzania projektem, który używa Spring do inicjowania źródła danych

text: ## Sytuacja w programie Używam Spring Framework do kodowania mojego Web Service, używając Dependency injection do wstrzykiwania ziarna DataSource do ziarna DAO, które będzie używane przez Web Service. Mam wszystkie właściwości bazy danych (URL, Hasło, Nazwa użytkownika, rzeczy, których nie chcę, aby ludzie widzieli) zapisane w XML DataSource Bean! ## Sytuacja w miejscu pracy Mam konfigurację git, aby zatwierdzić cały mój projekt .... (Wskazówka: w tym mój kod XML DataSource Bean, który ma moje hasło napisane zwykłym tekstem) Myślałem o użyciu .gitignore, ale XML Bean jest kluczowym elementem w mój projekt Web Service i nie należy go ignorować. (Prawda?) Ale nie chcę też, aby świat widział moje hasło. **_Co powinienem zrobić?_**


title: Licencja na bibliotekę w3c: czy uniemożliwia włączenie/dystrybucję z płatnym oprogramowaniem?

text: Z Informacji i Licencji Oprogramowania W3C: > Zezwolenie na kopiowanie, modyfikowanie i rozpowszechnianie tego oprogramowania i jego > dokumentacji, z modyfikacją lub bez, w dowolnym celu i bez opłat > lub niniejszym przyznaje się tantiemy Moja aplikacja zależy od xml-apis 1.4. 01 biblioteka, która z kolei zawiera oprogramowanie W3C i muszę je rozpowszechniać wraz z moją niewolną aplikacją. Nie pobieram jawnie opłat za dołączone komponenty xml-apis/W3C. Czy podane oświadczenie licencyjne wyklucza taką płatną dystrybucję? Nie odpowiadaj, jeśli nie wiesz o wyjątku linkowania GPL.


title: Typ zdefiniowany przez użytkownika dla prefiksów nazw zmiennych medycznych / medycznych?

text: Czytałem Code Complete na temat nazewnictwa zmiennych, próbując znaleźć odpowiedź na to pytanie i natknąłem się na tabelę powszechnie akceptowanych przedrostków do programowania oprogramowania edytora tekstu. Cóż, nie jestem programistą w edytorze tekstu, ale gdybym był, chętnie korzystałbym z typów zdefiniowanych przez użytkownika. Ponieważ jestem programistą dla niewielkiego niezależnego dostawcy usług medycznych i nie mam kontaktu z większą społecznością programistów oprogramowania dla opieki zdrowotnej (poza zaniedbaną i porzuconą HealthCareIT.SE, gdzie nigdy nie miałem okazji zadać tego pytania). Chcę wiedzieć, czy istnieje konwencja kodowania dokumentacji medycznej. Jak Pacjent = pnt i Wykres = chrt i Leki = med lub mdctn lub cokolwiek innego. Nie mówię w całości o notacji węgierskiej, ale po prostu o standardzie, który zmieściłby się w kompletnym kodzie zamiast tego wspaniałego wykresu UDT w edytorze tekstu, który jest dla mnie tak mało przydatny.


title: Wdrażanie wielu tabel dla tej samej jednostki ze względu na moc obliczeniową w aplikacjach klienckich

text: Doszedłem do problemu projektowego/architektonicznego w dużej aplikacji, nad którą pracuję, w momencie pisania możliwych rozwiązań na tablicy. Nasz produkt składa się z systemu informatycznego **klient-serwer**, którego implementacja została zbudowana w oparciu o paradygmaty REST. Konkretny przypadek użycia definiuje użycie wielu zasobów (większość z nich jest dostępna tylko po stronie serwera) w celu przetworzenia danych na rzeczywiste informacje przed wysłaniem ich po stronie klienta. Możesz myśleć o tym jako o masowym przetwarzaniu odpytywanych zasobów **w celu przedstawienia ich w określonej kolejności**. To prawie jak **ogromny algorytm sortowania**. Ze względu na fakt, że większość zasobów wykorzystywanych przez algorytm jest dostępna tylko po stronie serwera (ponieważ nie spełniają żadnego innego celu po stronie klienta) oraz fakt, że do jego wykonania potrzebna jest ogromna moc obliczeniowa, nie jest praktyczne odtworzyć tę po stronie klienta. Również w celu zapobieżenia ewentualnej inżynierii wstecznej. Aby spełnić wymaganie, musimy zaimplementować lokalną pamięć masową w aplikacji po stronie klienta, co oznacza, że musielibyśmy prezentować te _posortowane_ informacje, nawet jeśli żadna sieć nie jest dostępna. W celu ich prezentacji rozważamy możliwość zduplikowania tabeli bazy danych dla tego zasobu, na tabelę, która posłuży jedynie do przechowywania już posortowanych wyników. Do tego momentu, jakie są zalety i wady tego podejścia oraz jakie najlepsze praktyki należy wziąć pod uwagę. Jestem również otwarty na każdy wzorzec projektowy, używany do rozwiązania tego problemu, którego nie znam.


title: Jak zbierać branżowe wykorzystanie technologii utrwalania danych?

text: W naszej organizacji wykorzystujemy różne technologie dostępu/utrwalenia danych w różnych projektach. Do tej pory używane są Hibernate, JPA, Spring Data JPA, JDBC, Spring JDBC, MyBatis i QueryDSL. Jak mogę się dowiedzieć, jakie jest wykorzystanie tych technologii w branży? tj. który jest używany szerzej niż inne - lub nawet wykres kołowy pokazujący rozkład takich technologii. Ciekawi mnie również, jakie technologie są używane przez głównych graczy - na przykład duże firmy z Doliny Krzemowej lub znane firmy inwestycyjne. Czy znasz sposób na znalezienie tych danych? Czy firmy takie jak Forrester czy Gartner mogą mieć takie dane? Z góry dziękuję.


title: Czy w tej sytuacji odpowiednia jest metodyka zwinna?

text: Wyobraź sobie projekt, w którym interfejs, który ma zostać dostarczony, został zablokowany w 90%, a Ty masz już solidny projekt architektoniczny. Czy metodyka zwinna nadal oferuje jakąkolwiek wartość w tej sytuacji? Wydaje mi się, że metodyki zwinne (a mam na myśli Scrum) oferują największą wartość tam, gdzie istnieje wysoki stopień niepewności co do wymagań.


title: Czy profesjonalni programiści wciąż marzą o tworzeniu aplikacji zmieniających branżę/świat?

text: Jestem programistą hobby. Brak rzeczywistych terminów, opinii klientów lub recenzji wyników pozwala mi marzyć o posiadaniu i wdrażaniu The Next Great Idea That Changes the World. Oczywiście zdaję sobie sprawę, że prawdopodobnie mam większe szanse na wygraną na loterii, ale fajnie jest wyobrazić sobie, jak wyrzucić jakąś w pełni domową aplikację, która niszczy status quo. Wiem, że wielu profesjonalnych programistów ma projekty poboczne, niektórzy dla zysku, inni nie. Zastanawiałem się dziś rano w drodze do pracy (nudna praca niezwiązana z IT), czy konieczność kodowania jedzenia nie osłabia snu? Czy większe doświadczenie sprawia, że jesteś znużony i bardziej skoncentrowany na realizowanych projektach? Nie staram się być przygnębionym, po prostu zainteresowany sposobem myślenia prawdziwego profesjonalisty od oprogramowania :-)


title: Co stanowi język programowania i w jaki sposób można objąć prawami autorskimi język programowania?

text: Postanowiłem stworzyć własny język programowania, głównie dla zabawy. Zainteresował mnie jednak aspekt prawny tego wszystkiego. Możesz na przykład licencjonować określone programy na określonych warunkach. Jak jednak podejść do licencjonowania _języka_? Nie mam tu na myśli tylko implementacji języka (kompilator i VM), ale samego standardu. Czy brakuje mi czegoś innego w języku programowania? Co chciałbym osiągnąć przez takie licencjonowanie: 1. Uczynić to całkowicie FOSS (czy język może być FOSS, czy może to implementacja, która może być FOSS?) 2. Uznać się za autora (czy możesz legalnie być autorem 3. Zrób to tak, aby każdy, kto implementuje mój język, musiał mnie przypisywać (w stylu MIT. Pamiętaj, że nie mam żadnych nadziei, że ktokolwiek kiedykolwiek to zrobi, Po prostu się uczę.) Myślę, że rozwiązaniem byłoby oddzielne licencjonowanie maszyny wirtualnej i kompilatora dla mojego języka jako "oficjalnej implementacji", a następnie licencjonowanie dokumentu projektowego _jako samego języka_. Czego dokładnie mi tu brakuje?


title: Co nowego w Expert F# 2.0?

text: Posiadam pierwszą edycję Expert F# autorstwa Dona et al. i rozważam zakup kolejnej edycji, Expert F# 2.0. Ale zastanawiam się, czy warto. Jasne, że składnia zostanie zaktualizowana i tak dalej, ale byłbym bardziej zainteresowany, gdyby były omówione nowe tematy lub po prostu przekonujące rozszerzone omówienie tych samych tematów w przeciwnym razie. Miło słyszeć od każdego, kto jest właścicielem obu wydań, dzięki.


title: Czy program Visual Studio 2012 Express obsługuje testy NUnit?

text: Obecnie używam programu Visual Studio Express 2012 Desktop (wersja bezpłatna). Teraz otrzymałem kod źródłowy z dołączonymi testami NUnit. Nie mogę uruchomić ich z Visual Studio (nie widzę ich w Eksploratorze testów) i wydaje mi się, że nie mogę zainstalować oficjalnej wtyczki NUnit. **Czy ktoś może potwierdzić, że wersja Express nie obsługuje nUnit lub powiedzieć mi, jak to zrobić?**


title: Jakie jest znaczenie # w literałach liczb schematu R5RS?

text: _Istnieje_ częściowa odpowiedź na Stack Overflow, ale proszę o coś nieco bardziej szczegółowego niż odpowiedzi. A więc... Czy semantyka formalna (sekcja 7.2) określa znaczenie takiego literału numerycznego? Czy określa znaczenie operacji numerycznych na wartości wynikającej z interpretacji literału? Jeśli tak, jakie są znaczenia (po angielsku - denotacyjna semantyka to dla mnie wszystkie greckie znaki :))?


title: Jak ogólnie działa propagacja zdarzeń i czy jest to synonim propagacji zdarzeń?

text: Staram się ogarnąć ogólną zasadą działania i rozsyłania zdarzeń w (pod)systemach sterowanych zdarzeniami. Chociaż używałem go w wielu przypadkach, na przykład w JavaScript, Flash (Actionscript 2 i 3), a nawet stworzyłem dla siebie prosty system obsługi zdarzeń w PHP, nigdy tak naprawdę nie rozumiałem bąbelkowania zdarzeń i/lub propagacja tak dobrze. **Pierwsze pytanie:** czy propagacja zdarzenia jest synonimem propagacji zdarzenia? **Pytanie drugie:** Czy dobrze rozumiem, że kiedy zdarzenie „pęchnie”, oznacza to, że „przenosi się” w górę hierarchii obiektów? **Trzecie i najważniejsze pytanie:** Czy moje zrozumienie w pytaniu 2 jest prawidłowe; jak na ogół realizowane jest to „podnoszenie się” w górę hierarchii obiektów? Czy ogólnie oznacza to, że obiekt nadrzędny „ponownie wysyła” to samo zdarzenie do _swojego_ obiektu nadrzędnego (aż dotrze do obiektu głównego)? A jeśli tak; czy wszystkie te obiekty w hierarchii muszą nasłuchiwać swoich dzieci pod kątem tych zdarzeń, czy też brakuje mi jakiejś istotnej zasady w moim zrozumieniu bąbelkowania zdarzeń, gdzie nie ma potrzeby pozwalać obiektowi nadrzędnemu na rejestrowanie siebie jako słuchaczy zdarzeń obiektu potomnego? Gdybyś mógł zilustrować te podstawowe zasady za pomocą prostego pseudokodu, byłbym bardziej niż wdzięczny.