-
Notifications
You must be signed in to change notification settings - Fork 1
/
basictrainingdata.tsv
We can make this file beautiful and searchable if this error is corrected: Any value after quoted field isn't allowed in line 19.
241 lines (241 loc) · 53.1 KB
/
basictrainingdata.tsv
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
type content
text kolejny raz wyrzuca mi błąd na SPOJu przy banalnym zadaniu -> https://pl.spoj.com/problems/PA05_POT/Jest ktoś w stanie mnie nakierować dlaczego? Według mnie jest wszystko ok, kod:
code using System;namespace ConsoleApp53{ class Program { static void Main(string[] args) { int count = Convert.ToInt32(Console.ReadLine());
code while (count > 0) { string[] ab = Console.ReadLine().Split(' '); double a = Convert.ToDouble(ab[0]); double b = Convert.ToDouble(ab[1]);
code double res = Math.Pow(a, b);
code if (res >= 10) res -= (Math.Floor(res / 10) * 10);
code Console.WriteLine(res); count--; } Console.ReadKey(); } }}
text W wątku Czy to się opłaca @somedev napisał komentarz do posta o treści:
text somedev napisał(a):
text Najpierw naucz się programować a potem wybierzesz technologie. Sam obecnie używam koło 15 języków komercyjnych. Jak chcesz to idz i ucz się C# na .net core - to przyszłość.
text Chciałem się was zapytać (i w sumie samego autora posta także, jeśli będzie miał ochotę coś napisać) czemu wg was programowanie C# na .NET Core może być przyszłościowe. Czy ma to związek z nowymi systemami idącymi śladami Chrome OS, SaaS, przenoszeniem usług do chmury, otwieraniem się Microsoftu na open source itd.? W sumie to nawet lubię C#, ostatnio trochę go zakurzyłem, ale czasem zdarza mi się z niego korzystać i być może zmotywujecie mnie, abym się bardziej do niego przyłożył. Tym bardziej, że C# .NET Core jest multiplatformowe, co samo w sobie jest plusem.
text czemu wg was programowanie C# na .NET Core może być przyszłościowe
text Bo nie ma innej przyszłości dla .NET poza .NET Core.
text Korpo-apki biznesowe od dawna były, są i (w przewidywalnej przyszłości) będą pisane głównie w Javie i C#.
text .NETowcem nie jestem, ale skoro MS zainwestował masę czasu, energii, itd w rozwój .NET Core i przeportował do niego nawet Windowsowy GUI (ta część .NET Core jest akurat nieprzenośna) to .NET Framework można już w zasadzie pożegnać i przesiąść się z niego na ten .NET Core.
text Możecie wytłumaczyć mi ten fragment? Co on oznacza w praktyce. Z tego co wiem to w .NET Core (a w każdym razie w Visual Studio Code) nie można tworzyć aplikacji z GUI, a jedyna nadzieja jest w projektach typu Avalonia. Czy jest coś o czym nie wiem?
text I kolejne pytanie, jeśli chciałbym pouczyć się C# w technologii .NET Core to czy Visual Studio Code zaoferuje tyle samo możliwości co pełne Visual Studio? Niby jest wersja Community, ale to jest straszna kobyła, a jeśli nie wnosi ona nic ponad VSC to nie opłaca mi się jej instalować.
text Mam coś takiego:
code "status": "SUCCESS", "storage_id": 1, "products": { "69327371": { "product_id": 69327371, "ean": null, "sku": "test", "name": "test", "quantity": 0, "price_wholesale_netto": 0, "tax_rate": 0, "weight": 0, "description": null, "description_extra1": "", "description_extra2": "", "man_name": null, "man_image": null, "category_id": 1025134, "features": [], "price_brutto": 0, "price_netto": 0, "images": [ null ], "variants": [] }, "69327372": { "product_id": 69327372, "ean": null, "sku": "test2", "name": "test2", "quantity": 0, "price_wholesale_netto": 0, "tax_rate": 0, "weight": 0, "description": null, "description_extra1": "", "description_extra2": "", "man_name": null, "man_image": null, "category_id": 1025134, "features": [], "price_brutto": 0, "price_netto": 0, "images": [ null ], "variants": [] } }}
text Teraz pytanie jak by najprościej wykonać deserializację tego? Coś tam kombinuję, ale nic nie chce mi zadziałaś. Wklejenie w VS nie daje żadnego rozwiązaniaUżyj JsonUtility.FromJson.https://docs.unity3d.com/Manual/JSONSerialization.html
text @Spine: Wydaje mi się, że jego problem nie ma nic wspólnego z Unity.
text @endriusSkorzystaj sobie z Serializing and Deserializing JSON. Można pobrać z Nuget w Visual Studio.@AdamWox: z tego co widzę to grzebałeś też w Baselinker. To jest odpowiedź do getProductsData.Z Newtonsofta korzystam cały czas. Problem mam w tych miejscach:"69327371": { i "69327372": {.To są wartości dynamiczne. Teraz są takie, a mogę też odpytać się o np. 69327380, 69327400, 69327700. I wtedy się one podstawią. Z tym walczę@endrius:Próbowałeś słownika? Dictionary<TKey,TValue>
text WitamMam sobie oto taki ciąg znaków generowany w kontrolce textbox z automatu: 3gMXtRnFL4Znaki w kontrolce textbox się zmieniają na duże i małe.chciałbym teraz zrobić zamianę tych znaków na cyfry
text mam zadeklarowane takie coś:
code char[] znaki = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'q', 'o', 'p', 'r', 's', 't', 'u', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'Q', 'O', 'P', 'R', 'S', 'T', 'U', 'W', 'X', 'Y', 'Z' }; int[] liczby = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50};
text Teraz pytanie jak zamienić ów ciąg na zadeklarowane cyfry i zwrócić w jednym ciągu wszystkie cyfry odpowiadające każdemu znakowi w jednym ciągu ?np: 37384820431431374Łatwej Ci będzie zrobić sobie słownik coś takiego Dictionary<int, char> przechowywać tam klucz i wartość no i np sobie pętla odczytasz for(int i; I < div.count; i++) zmienna = dict[i];
text Jeżeli każda liczba w tablicy liczby ma taką wartość, jak index odpowiadającego jej elementu w tablicy znaki powiększony o 1, tak jak w Twoim przypadku, to możesz użyć wyrażenia LINQ:
code var convertedString = string.Join("", originalString.Select(x => znaki.Contains(x) ? (Array.IndexOf(znaki, x) + 1).ToString() : x.ToString()));
text Jeżeli pomyliłeś się we wpisywaniu alfabetu i tablica znaki powinna zawierać wszystkie małe i duże litery w kolejności występowania ich w angielskim alfabecie, to będzie jeszcze prościej.Dobry wieczór,
text Przy tworzeniu obiektu można w prosty spobów uzupełnić wszystkie propety w ten sposób
code line = new Line() { X1 = 0, X2 = 100, Y1 = 0, Y2 = 100};
text Czy gdy obiekt jest utworzony jest spobób aby nie odwoływać się do każdego parametru po kolei tak jak w przykładzie poniżej tylko bardziej tak jak przy tworzeniu nowego obiektu?
code line.X1 = 200line.X2 = 300
text oczywiście poza tworzeniem nowego obiektu lini.
text Pozdrawiam,AMMożesz zrobić metodę w obiekcie np wywołać tak: line.SetParameters(X1:0, X2: 100, Y1: 0, Y2:0)Gramatyka języka C# nie udostępnia takiej możliwości.
text W JavaScript służy do tego instrukcja with, ale jej użycie nie jest zalecane, bo właściwość obiektu zostanie używa tylko wtedy, gdy obiekt ją zawiera, a w przeciwnym wypadku użyta zostanie zmienna globalna.
code with (line) { X1 = 200; X2 = 300;}
text Patrząc na kod nie zawsze jest możliwe wywnioskowanie, czy w zasięgu instrukcji with zostanie użyta zmienna globalna, czy właściwość obiektu.
code let o = {};let p = true;
code // W tym przypadku to, co się będzie działo w zasiegu instrukcji// `with`, zależy od danych wprowadzonych przez użytkownika.o[prompt()] = true;
code with (o) { p = false;}
text C# mógłby udostępniać bezpieczną instrukcję, która zapisuje wartości w zasięgu jakiejś instrukcji bez konieczności podawania nazwy obiektu przy nazwie każdej właściwości, ale to by zwiększyło ilość linii potrzebnych do zapisania wartości wielu właściwościom, a nie zredukowało. Jeżeli korzyścią byłoby nadanie wartości wielu właściwościom w obiekcie o bardzo długiej nazwie, to rozwiązaniem jest użycie innej referencji do tego obiektu, która ma krótką nazwę.
text Nie ma takiej konstrukcji.
text Z jednej strony mówi się, że jeżeli potrzebujesz zrobić z obiektem kilka rzeczy "naraz" już po jego inicjalizacji, to raczej powinieneś zrobić sobie do tego metodę - vide odpowiedź Jona Skeeta na SO.
text Kilka lat temu wypowiadał się ówczesny PM C# Scott Wiltamuth na ten temat (tj. na temat konstrukcji with, która robiła by coś takiego jak chcesz i jest dostępna np. w VB.NET albo Delphi): https://stackoverflow.com/a/601163, jak również jeszcze raz Jon Skeet (https://devblogs.microsoft.co[...]c-have-vb-nets-with-operator/).Na podstawie przykładu od @neves przerobiłem
code private void LineTabMouseMoveEvent() { line.X2 = Mouse.GetPosition(cvs).X; line.Y2 = Mouse.GetPosition(cvs).Y; }
text na coś takiego
code private void LineTabMouseMoveEvent() => (line.X2, line.Y2) = ( Mouse.GetPosition(cvs).X, Mouse.GetPosition(cvs).Y);
text moim zdaniem wygląda to ciekawie Hej.
text W ramach jednej solucji mam 3 projekty a wiec i 3 configi. Glowny projekt (A) i dwa prokety (B i C) dolaczone do projektu glownego.W projekcie C chce odwolac sie do AppSettings. Jako ze sa 3 projekty to sa i trzy configi. niezaleznie z ktorego projektu chce sie odwolac do AppSettings, zawsze odwoluje sie do configu projektu A. Jest mozliwosc do odwolania sie do configu B w proekcie B?Każda aplikacja ma swój config, bo każda aplikacja powinna móc działać niezależnie. A Ty w jednej solucji masz trzy aplikacje.
text Może lepiej napisz, co próbujesz osiągnąć, bo wygląda to dość dziwnie.
text Zgodnie z dokumentacją MShttps://docs.microsoft.com/en[...]ettings?view=netframework-4.8
text Gets the AppSettingsSection data for the current application's default configuration.
text Czyli w aplikacji konsolowej doczyta konfig konsolowy, w aplikacji winform konfig z winform.
text Jakbyś chciał doczytać konfigurację z innej aplikacji, to poniższy kod może Ci pomóc:
code ExeConfigurationFileMap configMap = new ExeConfigurationFileMap { ExeConfigFilename = path };conf = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);string db = _conf.AppSettings.Settings["db"].Value;
text Wiem, że to chyba nie do końca dobre miejsce, ale czy ktoś z szanownych Koleżanek i Kolegów miał (wątpliwą) przyjemność bawienia się w C# z WebApi Elektronicznego Nadawcy Poczty Polskiej?
text Zabrałem się bojowo, zaimportowałem WSDLa, i już przy próbie wywołania metody testowej dostałem z buta w zęby:
text "Atrybut System.Xml.Serialization.XmlAttributeAttribute obiektu XmlSerializer nie jest prawidłowy w withBioepo. Kiedy atrybut IsWrapped ma wartość true, obsługiwane są tylko atrybuty XmlElement, XmlArray, XmlArrayItem i XmlAnyElement."
text przyznam, że nawet nie wiem po jakiemu to...
text Ostatnio napotkałem na podoby problem.
text Żeby uruchomić usługę w Visual Studio, ostatecznie musiałem wygenerować kod przy pomocy svcutil.exe.
code svcutil /t:code en.wsdl /out:wsdl.cs /serializer:XmlSerializer /wrapped
text Powyższa komenda generuje plik wsdl.cs, który można dodać do projektu.
text Trzeba jednak mieć na uwadze fakt, że tak wygenerowany kod znacznie różni się od kodu domyślnego.
text Zaciągasz WSDLa i masz dostęp do wszystkich klas i metod. Potem coś takiego:
code ElektronicznyNadawca Poczta = new ElektronicznyNadawca(); System.Net.NetworkCredential c = new System.Net.NetworkCredential(); c.UserName = userName c.Password = password System.Net.CredentialCache cc = new System.Net.CredentialCache(); cc.Add(new Uri("https://e-nadawca.poczta-polska.pl/websrv/en.wsdl"), "Basic", c); Poczta.Credentials = cc;
text I działają nie tylko tylko testowe ale wszystkie.
text Chcę wygenerować dane do testów, których będę używać podczas pisania frontu. Jak to najlepiej zrobić? W EF Core jest HasData, ale w dokumentacji piszą, że do danych testowych lepiej tego nie używać, bo ma za duże ograniczenia. Piszą też, że:
text The seeding code should not be part of the normal app execution as this can cause concurrency issues when multiple instances are running and would also require the app having permission to modify the database schema.
text Depending on the constraints of your deployment the initialization code can be executed in different ways: Running the initialization app locally Deploying the initialization app with the main app, invoking the initialization routine and disabling or removing the initialization app.
text 1) Tak to się robi? Tworzy się osobną aplikację konsolową, która służy do inicjalizacji bazy?2) Czy dane do testów integracyjnych i dane, które idą na front podczas developmentu, powinny być różne?
text Zalezy ile tych danych chcesz wygenerowac, jesli dziesiatki tysiecy to lepiej unikac hasdata i napisac generowanie danych w t-sql. Ja do testow integracyjnych uzywam in memory i dane tam leca z hasdata.
text Raz mialem za zadanie wygenerowac 400 tys rekordow. Jedyne rozwiazanie to plik sql dolaczony do migracji
text Jeżeli dane są nie jakoś mocno złożone, to forki po wstrzyknięciu się w Startup aż się nie uzbierają sensowne dane.
text Jeżeli są, to kradnę bazę z proda po anonimizacji :D
text Jeżeli faktycznie integracyjny, to on działa na pustej bazie i ma sobie wygenerować dane przy realizowaniu flow lub dostaje coś "z ręki" aby móc iść dalej.Na szybko zaklepałem takie coś:
code public static void Main(string[] args) { var host = CreateWebHostBuilder(args).Build();
code var context = (ApplicationDbContext) host.Services.GetService(typeof(ApplicationDbContext));
code if (!context.Database.CanConnect()) { context.Database.Migrate(); TestDbInitializer.Initialize(context); // Baza do testów }
code context.Dispose();
code host.Run(); }
text Tak to ma wyglądać?
text Ja ostatnio jeśli chodzi o testy integracyjne to korzystam z tego rozwiązania: https://docs.microsoft.com/pl[...]ion-tests?view=aspnetcore-2.2
text A jeśli chodzi o dane to: To co jest w hasData pojawi się w np InMemory. A jak potrzebuje czegoś więcej to dodaje w projekcie testowym (Jest tam też przykład w tym linku z MS)
text Generalnie moje testy integracyjne wyglądają bardzo podobnie do tego: https://www.codingame.com/pla[...]-0/part-3---integration-testsJa zazwyczaj używam oddzielnych baz do testów integracyjnych (i ją sobie tworzę na nowo dla każdego fixture).Ale zdarzały mi się też takie projekty, w których baza jest jedna, na dodatek nigdy nic z niej nie było usuwane.
text Do generowania danych używam AutoFixture. I tak mam masę customizacji, które są potrzebne w unit testach, więc mam jak wygenerować prawidłowe dane, które można wstawić do bazy. Ten Bogus może i fajnie wygląda, ale wydaje się słabo reużywalny i zbyt wiele trzeba konfigurować.Cześć,
text stworzyłem swoj pierwszy projekt asp.net i chciałbym go opublikowac na firmowym serwerze (2008 R2). Ponizej pliki konfiguracyjne:
code <authentication mode="Forms"> <forms loginUrl="~/Login/Logowanie" timeout="2280"></forms> </authentication>
code <add name="ccarEntities" connectionString="metadata=res://*/ccarDaneEF.csdl|res://*/ccarDaneEF.ssdl|res://*/ccarDaneEF.msl;provider=System.Data.SqlClient;provider connection string="Data Source=SLSVMDB01;Initial Catalog=ccar;User Id=MoldTracker;Password=******;integrated security=False;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" /><add name="ccarMeetingMinutesEntities" connectionString="metadata=res://*/ccarMMdaneEF.csdl|res://*/ccarMMdaneEF.ssdl|res://*/ccarMMdaneEF.msl;provider=System.Data.SqlClient;provider connection string="data source=SLSVMDB01;initial catalog=ccarMeetingMinutes;persist security info=True;user id=MoldTracker;password=*******;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
text To co robie:
text Publikuje apilkacje w VS do folderu. Folder kopiuje na server, np. na dysk c: Dodaje website do sites Tutaj mam wrazenie pojawia sie pierwszy problem:ześć.Mam problem z przeładowaniem danych w DataGrid.
text We ViewModelu zdefiniowałem i zainicjalizowałem zmienną typu ObservableCollection.W ViewModelu oczywiście odziedziczyłem inną klasę która sama dziedziczy z INotifyCollectionChanged oraz implementuje medotę NotifyCollectionChanged.
text Zbindowałem ItemSource do zmiennej.
code public ObservableCollection<RouteUserDocumentPosition> zmienna { get => routes; set { routes = value; base.NotifyCollectionChanged(System.Collections.Specialized.NotifyCollectionChangedAction.Add); } }
code protected void NotifyCollectionChanged(NotifyCollectionChangedAction action , [CallerMemberName]string propertyName = "") { switch(action) { case NotifyCollectionChangedAction.Reset: this.CollectionChanged?.Invoke(this , new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); break;
code case NotifyCollectionChangedAction.Add: this.CollectionChanged?.Invoke(this , new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add , propertyName)); break; } }
code <DataGrid x:Name="DataGrid" Margin="0,0,0,0" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" ItemsSource="{Binding zmienna}">
text Niestety przy przeładowaniu danych w ObservableCollection nie widzę żadnych zmian na widoku, a powinienem zauważyć zmianę koloru wiersza.
code await Application.Current.Dispatcher.BeginInvoke( System.Windows.Threading.DispatcherPriority.Normal, new Action(() => { foreach (RouteUserDocumentPosition document in documentsPositions) zmienna.Add(document); base.NotifyCollectionChanged(System.Collections.Specialized.NotifyCollectionChangedAction.Add); }));
text Na początku podejrzewałem że może być wymagane operowanie na głównym wątku. Następnie że jednak ObservableCollection nie zauważa zmiany. Teraz już nie mam pomysłu.Co może być powodem nie przeładowywania zmiennych?Witam, jak zaznaczyć punkt na wykresie np za pomocą markera bądź linii pionowej w bibliotece ZedGraph dla c#. Jest to najzwyczajniejszy wykres wartości x,y na którym muszę po prostu coś oznaczyć.
text Witam mam taki problem,na stronie po zaznaczeniu checkboxów zwraca mi w modelu null.
code public class TReportsViewModel : GridViewModel{ public List<COPerType> OprType = new List<COPerType>();}
code public class COPerType { private bool bCheck; // checked private string bName; // name operation
code #region getters/setters public bool Check { get { return bCheck; } set { bCheck = value; } } public string Name { get { return bName; } set { bName = value; } } }
code public ViewResult ActivityOpt() { TReportsViewModel tm = new TReportsViewModel(); string[] sOperationTypes = { "otwarcie nagrania", "eksport nagrania" }; tm.bAllOper = true; for( int i = 0; i < sOperationTypes.Length;i++ ) { COPerType opt = new COPerType(); opt.Check = false; opt.Name = sOperationTypes[i]; tm.OprType.Add( opt ); } return View("~/Views/Reports/ActivityOpt.cshtml", tm); } [HttpPost]public ActionResult ActivityOpt(TReportsViewModel tvm){
code @using( Html.BeginForm() ){ @Html.ValidationSummary( true )
code <table width="160" cellpadding="0" cellspacing="0" border="0" style="border:none"> @for( int l = 0; l < Model.OprType.Count;l++ ) { <tr style="border:none"> <td style="border:none"> @Html.CheckBoxFor( x => x.OprType[l].Check ) @Html.DisplayFor( x => x.OprType[l].Name ) </td> </tr> } </table> <input type="submit" value="@Resources.OK" style="margin-left:0px;position:absolute"/>
text po wysłaniu formularza mój model OprType = 0. Nie zwraca mi zaznaczonych checkbxów.
text Z góry dziękuje i pozdrawiamPiK
text Witam,Czy jest jakiś sposób by zoptymalizowac zapytania budowane przez automappera ?Niestety w SQL Profiler jak podpatrzyłem zapytania to idą potężne zapytania które niestety działają 3-4 razy dłużej niż napisane zapytanie z palca.Rozumiem że jest to "automat" i nigdy nie zrobi w pełni optymalnego zapytanai ale pytanie czy musi np. zwracać tak dużą liczbe niepotrzebnych kolumn ?Przykładowo wyciąga "klucze" z podzapytań i zwraca je do aplikacji
code SELECT [Project3].[Id1] AS [Id], [Project3].[Id2] AS [Id1], [Project3].[Id3] AS [Id2], [Project3].[Id4] AS [Id3], [Project3].[Id5] AS [Id4], [Project3].[Id6] AS [Id5], [Project3].[Id7] AS [Id6], [Project3].[Id8] AS [Id7], [Project3].[Id9] AS [Id8], [Project3].[Id10] AS [Id9], [Project3].[Id11] AS [Id10], [Project3].[Id12] AS [Id11], [Project3].[C1] AS [C1], [Project3].[Id] AS [Id12], [Project3].[Number] AS [Number], [Project3].[C2] AS [C2], [Project3].[Name] AS [Name], [Project3].[Name1] AS [Name1], [Project3].[CopiesCount] AS [CopiesCount], [Project3].[C3] AS [C3], [Project3].[Number1] AS [Number1] FROM ( SELECT [Project1].[Id] AS [Id], [Project1].[Id1] AS [Id1], [Project1].[Id2] AS [Id2], [Project1].[Id3] AS [Id3], [Project1].[Id4] AS [Id4], [Project1].[Id5] AS [Id5], [Project1].[CopyNumber] AS [CopyNumber], [Project1].[Id6] AS [Id6], [Project1].[ConsecutiveNumber] AS [ConsecutiveNumber], [Project1].[Id7] AS [Id7], [Project1].[Id8] AS [Id8], [Project1].[Id9] AS [Id9], [Project1].[Number] AS [Number], [Project1].[CopiesCount] AS [CopiesCount], [Project1].[Id10] AS [Id10], [Project1].[Id11] AS [Id11], ** [Project1].[Name] AS [Name], [Project1].[Id12] AS [Id12], [Project1].[Name1] AS [Name1], [Project1].[C1] AS [C1], [Project1].[C2] AS [C2], [Limit1].[Number] AS [Number1], CASE WHEN ([Limit1].[Step] IS NULL) THEN CAST(NULL AS int) ELSE 1 END AS [C3] FROM (SELECT [Filter1].[Id1] AS [Id], [Filter1].[hireId] AS [hireId], [Filter1].[Id2] AS [Id1], [Filter1].[Id3] AS [Id2], [Extent4].[Id] AS [Id3], [Extent5].[Id] AS [Id4], [Extent6].[Id] AS [Id5], [Extent6].[CopyNumber] AS [CopyNumber], [Extent7].[Id] AS [Id6], [Extent7].[ConsecutiveNumber] AS [ConsecutiveNumber], [Extent8].[Id] AS [Id7], [Extent9].[Id] AS [Id8], [Extent10].[Id] AS [Id9], [Extent10].[Number] AS [Number], [Extent10].[CopiesCount] AS [CopiesCount], [Extent11].[Id] AS [Id10], [Extent12].[Id] AS [Id11], [Extent12].[Name] AS [Name], [Extent13].[Id] AS [Id12], [Extent13].[Name] AS [Name1], 1 AS [C1], CASE WHEN ([Extent9].[CopyNumber] IS NULL) THEN N'''' ELSE CAST( [Extent9].[CopyNumber] AS nvarchar(max)) END AS [C2] FROM (SELECT [Extent1].[Id] AS [Id1], [Extent1].[hireId] AS [hireId], [Extent1].[CurrentReceiverOrganizationId] AS [CurrentReceiverOrganizationId], [Extent2].[Id] AS [Id2], [Extent2].[hireStatusId] AS [hireStatusId], [Extent3].[Id] AS [Id3] FROM [dbo].[Transfer] AS [Extent1] INNER JOIN [dbo].[hire] AS [Extent2] ON [Extent1].[hireId] = [Extent2].[Id] INNER JOIN [dbo].[Copy] AS [Extent3] ON [Extent2].[CopyId] = [Extent3].[Id] WHERE ([Extent1].[TransferEnd] IS NULL) AND ([Extent2].[IsSigned] = 1) AND (0 = [Extent3].[IsDisposed]) AND (0 = [Extent3].[IsMistaken]) ) AS [Filter1] LEFT OUTER JOIN [dbo].[hireStatus] AS [Extent4] ON [Filter1].[hireStatusId] = [Extent4].[Id] LEFT OUTER JOIN [dbo].[hire] AS [Extent5] ON [Filter1].[hireId] = [Extent5].[Id] LEFT OUTER JOIN [dbo].[Copy] AS [Extent6] ON [Extent5].[CopyId] = [Extent6].[Id] LEFT OUTER JOIN [dbo].[Document] AS [Extent7] ON [Extent6].[DocumentId] = [Extent7].[Id] LEFT OUTER JOIN [dbo].[hire] AS [Extent8] ON [Filter1].[hireId] = [Extent8].[Id] LEFT OUTER JOIN [dbo].[Copy] AS [Extent9] ON [Extent8].[CopyId] = [Extent9].[Id] LEFT OUTER JOIN [dbo].[Document] AS [Extent10] ON [Extent9].[DocumentId] = [Extent10].[Id] LEFT OUTER JOIN [dbo].[DocumentType] AS [Extent11] ON [Extent10].[DocumentTypeId] = [Extent11].[Id] LEFT OUTER JOIN [dbo].[Sort] AS [Extent12] ON [Extent11].[SortId] = [Extent12].[Id] LEFT OUTER JOIN [dbo].[ClassType] AS [Extent13] ON [Extent10].[ClassTypeId] = [Extent13].[Id] WHERE ([Extent4].[StatusSymbol] IN (21,3,36,37,43,38)) AND ([Filter1].[CurrentReceiverOrganizationId] = @p__linq__0) ) AS [Project1] OUTER APPLY (SELECT TOP (3) [Project2].[Step] AS [Step], [Project2].[Number] AS [Number] FROM ( SELECT [Extent15].[Step] AS [Step], [Extent15].[Number] AS [Number] FROM [dbo].[hire] AS [Extent14] INNER JOIN [dbo].[Book] AS [Extent15] ON [Extent14].[CopyId] = [Extent15].[CopyId] WHERE [Project1].[hireId] = [Extent14].[Id] ) AS [Project2] ORDER BY [Project2].[Step] DESC ) AS [Limit1] ) AS [Project3] ORDER BY [Project3].[ConsecutiveNumber] DESC, [Project3].[CopyNumber] ASC, [Project3].[Id1] ASC, [Project3].[Id2] ASC, [Project3].[Id3] ASC, [Project3].[Id4] ASC, [Project3].[Id5] ASC, [Project3].[Id6] ASC, [Project3].[Id7] ASC, [Project3].[Id8] ASC, [Project3].[Id9] ASC, [Project3].[Id10] ASC, [Project3].[Id11] ASC, [Project3].[Id12] ASC, [Project3].[Id] ASC, [Project3].[C3] ASC',N'@p__linq__0 uniqueidentifier',@p__linq__0='65A88242-F755-E911-80C7-005056A4F5EF'
text jaki macie sposób by sobie z tym radzić ? Mam sporo rzeczy do zaciągania z bazy i korzystanie z automappera jest wygodne ale niestety te zapytania mnie przerażają.
text Pokaż przykład struktury klas i mapowań, może uda się coś wymyślić.Witam. Piszę sobie testy integracyjne. Dokładnie testy logowania z wykorzystaniem OpenIdict. Mam metodę w testach Oznaczoną jako [Theory] oraz 2x InlineData.Problem jest taki, że przy jednym teście (tym który uruchamia się drugi) OpenIdict mnie nie wpuszcza (mam komunikat, że zły client_id). Jeśli jeden z testów wyrzucę nie ważne który to działa.Do uruchomienia servera testowego wykorzystuje to co pokazuje MS https://docs.microsoft.com/pl[...]ion-tests?view=aspnetcore-2.2
code [Theory] [InlineData("linkedin", "SomeInvalidLinkedInCode", "App", ApiErrorCode.LinkedInLoginError, HttpStatusCode.BadRequest)] // [InlineData("linkedin", "SomeValidLinkedInCode", "App", ApiErrorCode.AccountNotActiveError, HttpStatusCode.BadRequest)] //To działa (uruchamia się pierwsz)public async Task Call_LoginViaLinkedIn_Should_Return_CustomError(string grant_type, string code, string client, ApiErrorCode errorCode, HttpStatusCode statusCode){_factory.DatabaseName = Guid.NewGuid().ToString(); HttpClient _fakeClient; Mock<FakeHttpMessageHandler> _fakeHttpMessageHandler = new Mock<FakeHttpMessageHandler> { CallBase = true };
code _fakeClient = new HttpClient(_fakeHttpMessageHandler.Object);
code _fakeHttpMessageHandler.Setup(f => f.Send(It.IsAny<HttpRequestMessage>())).Returns((HttpRequestMessage message) => { HttpContent content = null; HttpStatusCode responseCode = HttpStatusCode.OK; if (message.RequestUri.AbsoluteUri.Contains("accessToken", System.StringComparison.OrdinalIgnoreCase)) { var messageContent=message.Content.ReadAsFormDataAsync().Result; if (messageContent.Get(3) == "SomeValidLinkedInCode") { content = new StringContent(System.IO.File.ReadAllText("LinkedInAuth.json")); responseCode = HttpStatusCode.OK; } else { responseCode = HttpStatusCode.BadRequest; } }
code if (message.RequestUri.AbsoluteUri.Contains("me?projection=", System.StringComparison.OrdinalIgnoreCase)) { responseCode = HttpStatusCode.OK; content = new StringContent(System.IO.File.ReadAllText("LinkedInProfile.json")); }
code if (message.RequestUri.AbsoluteUri.Contains("v2/emailAddress?", System.StringComparison.OrdinalIgnoreCase)) { responseCode = HttpStatusCode.OK; content = new StringContent(System.IO.File.ReadAllText("LinkedInEmail.json")); }
code if (message.RequestUri.AbsoluteUri.Contains("image")) { responseCode = HttpStatusCode.OK; content = new StringContent("someImageBytes"); }
text return new HttpResponseMessage { StatusCode = responseCode, Content = content }; });
text var testClient = _factory.WithWebHostBuilder(builder => { builder.ConfigureTestServices(services => { services.Remove(new ServiceDescriptor(typeof(HttpClient), ServiceLifetime.Scoped)); services.AddScoped<HttpClient>(x => _fakeClient); }); }).CreateClient(new WebApplicationFactoryClientOptions { AllowAutoRedirect = false });
code var parameters = GetParameters(grant_type, code, client);
code var httpRequest = new HttpRequestMessage(HttpMethod.Post, "/connect/token") { Content = new FormUrlEncodedContent(parameters) };
code var httpResponse = await testClient.SendAsync(httpRequest); var value = await httpResponse.Content.ReadAsStringAsync(); var response = JsonConvert.DeserializeObject<CustomErrorResponse>(value);
code Assert.Equal(statusCode, httpResponse.StatusCode); Assert.Equal(errorCode, response.ErrorCode);}
text Gdy zakomentuję jeden inline to działa.
text Oczywiście aplikacje, które mogę uderzać do OpenIdConnectRequest są dodawane w klasie Startup zgodnie z tym co w dokumentacji OpenId.Witam,
text kolejny raz wyrzuca mi błąd na SPOJu przy banalnym zadaniu -> https://pl.spoj.com/problems/PA05_POT/Jest ktoś w stanie mnie nakierować dlaczego? Według mnie jest wszystko ok, kod:
code using System;namespace ConsoleApp53{ class Program { static void Main(string[] args) { int count = Convert.ToInt32(Console.ReadLine());
code while (count > 0) { string[] ab = Console.ReadLine().Split(' '); double a = Convert.ToDouble(ab[0]); double b = Convert.ToDouble(ab[1]);
code double res = Math.Pow(a, b);
code if (res >= 10) res -= (Math.Floor(res / 10) * 10);
code Console.WriteLine(res); count--; } Console.ReadKey(); } }}
text Cześć. Mam taki problem gdy dodaję użytkownika do bazy. Używam .NET Core 2.2 W konsoli mam taki warring:
text [08:45:36 Warning] Microsoft.AspNetCore.Cors.Infrastructure.CorsServiceThe CORS protocol does not allow specifying a wildcard (any) origin and credentials at the same time. Configure the policy by listing individual origins if credentials needs to be supported.
code public void ConfigureServices(IServiceCollection services) { services.AddCors(aa=>aa.AddPolicy("police", aaa =>aaa.WithOrigins("http://localhost:4200").AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin().AllowCredentials()));}
code app.UseCors("police");
text Co robię źlę implementując CORS ?Przeglądałem ostatnio dość popularny projekt - modular-monolith-with-ddd na githubie. Skupiłem swoją uwagę na sposobie rejestracji modułów. Jako, że nie korzystam na co dzień z autofaca chciałbym się zapytać bardziej doświadczonych osób dlaczego metoda FindConstructors(Type targetType) klasy AllConstructorFinder, nie zostaje wywołana dla typu repozytorium MeetingGroupProposalRepository. Tu znajduje się wywołanie rejestracji.Mam projekt podzielony w następujący sposób:
text Core Domain Application Persistence Presentation WebApi Razor Blazor
text Cała logika znajduje się w Core, wszystkie projekty z prezentacji posiadają referencje tylko do Application. Korzystam z rozdzielenia przypadków użycia na commands, queries.
text Teraz przykładowo chcę stworzyć nowego klienta, więc definiuję komendę:
code public class CreateCustomerCommand : IRequest<int>{ public string Name { get; set; } public int MembershipTypeId { get; set; } public bool IsSubscribedToNewsletter { get; set; } public DateTime? Birthdate { get; set; }}
text I tu pojawia się mój problem, mianowicie chcę, wybrać MembershipType z rozwijanej listy, żeby móc to zrobić w kontrolerze pobieram dostępne opcje i przesyłam je do widoku:
code public class CustomersController : Controller{ public async Task<IActionResult> Create() { var membershipTypes = await _mediator.Send(new GetMembershipTypesQuery());
code return View(membershipTypes); }}
code public class GetMembershipTypesQueryHandler : IRequestHandler<GetMembershipTypesQuery, IEnumerable<MembershipTypeDto>>{ public async Task<IEnumerable<MembershipTypeDto>> Handle(GetMembershipTypesQuery request, CancellationToken cancellationToken) { return await _context.MembershipTypes .Select(MembershipTypeDto.Projection) .ToListAsync(cancellationToken); }}
text Ale w tym przypadku nie mam do czego bindować pól z formularza, więc tworzę viewmodel:
code public class CreateCustomerViewModel{ public CreateCustomerCommand Command { get; set; } public IEnumerable<MembershipTypeDto> MembershipTypes { get; set; }}
code public class CustomersController : Controller{ public async Task<IActionResult> Create() { var membershipTypes = await _mediator.Send(new GetMembershipTypesQuery());
code var vm = new CreateCustomerViewModel { MembershipTypes = membershipTypes };
code return View(vm); }}
text Czy tworzenie viewmodeli w kontrolerze jest dobrą opcją? Początkowo myślałem, żeby je zwracać z Application ale nie wiem jak by to miało wyglądać np. dla CreateCustomerViewModel, utworzyć query, które mi zwróci vm, nie widzę w tym sensu szczególnie, że jeśli posiadam API to tam nie potrzebuję viewmodeli. Obecnie viewmodele znajdują się w warstwie prezentacji co powoduje, że dla każdego projektu muszę tworzyć ich kopię czy to jest dobre podejście czy może przenieść je do Application lub stworzyć nowy projekt i dzielić pomiędzy wszystkie projekty z warstwy prezentacji?Nie wiem czy to zadziała ale ja bym zrobił widok z modelem CreateCustomerCommand. A membershipTypes przekazywał do widoku np za pomocą jakiegoś ViewBag czy ViewData. Raczej nie duplikowałbym ViewModeli. No i teraz jeśli masz różne projekty (API, MVC) to prezentacje danych (ViewModele) wrzuciłbym do osobnego projektu np jakiś Common. I to zwracał z Application. Takie moje zdanie. do końca nie rozumiem na czym polega problem, ale odpowiadając na pytania:
text View modele należą do warstwy widoku więc tak, tam należy je tworzyć. Żeby było ładnie i czysto można użyć extensions methods.
text Każdy Twój projekt to inna aplikacja UI, więc moim zdaniem powinna posiadać własne view modele. Po prostu traktował bym je tak jakby równie dobrze były w oddzielnych solucjach.Witam próbuję połączyć się ze sterownikiem omron NX1P2 za pomocą protokołu TCP oraz tej biblioteki https://www.codeproject.com/Tips/878194/OMRON-PLC-TCP-Interface.Ściągnąłem demówke i próbuję się łączyć ale wyskakuje mi komunikat ."Nie można nawiązać połączenia, ponieważ komputer docelowy aktywnie go odmawia". Adres sterownika to 192.168.250.1 natomiast ja mam na kompie ustawiony adres 192.168.250.3. Nie wiem co jest grane. Po ustawieniu adresu IP na kompie pinguje mi ten sterownik oraz mogę się połączyć SysMac
text Mam sobie dictionary ktora konwertuje na jsona przy uzyciu Json.NET
code string json = JsonConvert.SerializeObject(orders, Formatting.Indented, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All });
text Wsio mi sie ladnie konwertuje, poczatek jsona wyglada tak: "{\r\n \"$type\": \"System.Collections.Generic.Dictionary`2[[System.UInt16......i teraz chce sobie to zapisac do tabeli w sqlite
code sqLite.saveData("insert into OrdersHistory (data) values(" + json.ToString() + ")");
text metoda saveData wyglada tak:
code public void saveData(string SQL)//, T val) { IDbConnection conn = getConnection(); using (conn) { conn.Execute(SQL); } }
text Wywala blad: SQL logic errorunrecognized token: "{"”
text Co robie nie tak, moze nie mozna sobie tak do wartosci typu text w bazie danych zapisac calego jsona?Ok znalazlem rozwiazanie:) Jeszzcze przed i po dodaniu jsona trza dodac ' zeby nie glupialo przy innych " czyli:
code sqLite.saveData("insert into OrdersHistory (data) values(" + "'" + json.ToString() + "'" + ")");
text Pamietajcie ze baza w sqlicie sie zapisuje zwykle w binie w debugu czy tam w releasie wiec zmiany beda w tej bazie w binie
text Mysle ze nie bo bogupi sie z cudzyslowami:> ale jak dasz
code insert into OrdersHistory (data) values ('{ "type":"typDanych", "innePole":"wartość"}');
text to sie doda poprawnie;)No wlasnie z tego co wiem to w sqlite nie moge dodawac obiektow jakiejs klasy z danymi tylko prosty txt.A mam sobie jakies zamowienie typu Order ktore chcialbym zachowac.Owszem moglbym zapisywac sobie liste do bazy w stylu id:4 ilosc:1 itd i po id pobierac z innej tabeli jakies tam wlasciwosci (cena, nazwa itd) ale i tak bym musial to parsowac do jsona bo sqlite nie ma tez takiego typu jak lista czy tam array (z tego co wiem:) )
text teraz robie jakis prosty programik w c# w ramach testu a ze dopiero zaczynam sie przesiadac na c# to wszystkiego w tydzien nie ogarne, a z bazami danych mialem praktycznie 0 kontaktu :)W sumie masz racje zapisywanir jsona do bazy danych to masa smieci. Ale liste i tak bym musial jakos zapisac. Powiedzmy ze mam tabele A z kategoriami produktow i id produktu.
text Powiedzmy ze zrobie sobie tabele B z zamowieniami gdzie bede mial to id produktu, ktory zostal zamowiony. Tylko teraz, jezeli ktos zamowi: 3 prodykty id1 do tego 2 produkty id4 i 1 produkt id5 i to jest jako jedno zamowienie. Jedno zamowienie ktore musze pobrac i musi roznic sie od innych zamowien wiec najlepiej zapisac to jako 1 rekord w tabeli. Jesli nie bylby to jeden rekord to moglbym dodac sobie pole id_zamowienia i kazdy element z zamowienia bylby w bazie jako osobny rekord ale nie wydaje mi sie to wlasciwe bo powiedzmy ze takich zamowien bedzie kilkaset tysiecy dziennie i pozniej filtruj te wszystkie zamowienia i wyszukuj wszystkie rekordy z danym id_zamowienia zeby powiazac to z konkretnym zamowieniem. Jak bys to rozwiazal?
text Najproscie byloby moc zapisac chociaz array ktory by wtedy wystarczyl poniewaz 1 rekord do zamowienia i tabela mialaby id, i obiekt array ktory by sobie skladal sie z konkretnych id_produktu i ilosci produktu w danym zamowieniu czyli cos w stylu
text Po to by sie przydalo zapisywac chociaz array`e wedlug mnie.
text Tabela Zamowienieid, data, numer
text Tabela ProduktyZamowieniaid, produktid, cena, ilosc, zamowienieid
text Dodajesz zamówienie z trzema pozycjami tzn, że dodajesz raz zamówienie, dostajesz jego ID, dodajesz 3 produkty z tym samym id zamówienia. Zamówienie w bazie będzie jedno, jego ID będzie unikalne, a pozycję tego zamówienia możesz wyciągnąć joinem
code select * from Zamowienie z join ProduktyZamowienia pz on z.id = pz.zamowienieid where z.id = 2
text Jaki to stwarza problem przy tysiącu zamówień?a te 3 produkty dodajesz do innej nowej tabeli... hmm no w sumie nic nie bedezie trzeba filtrowac i byloby w sumie szybkie.A nie byloby szybciej gdyby byla tylko jedna tabela z typem array? :>
text W sumie racja, zrobie jak sugerujesz tylko
code select * from Zamowienie z join ProduktyZamowienia pz on z.id = pz.zamowienieid where z.id = 2
text tylko te z i pz bedzie widzial jako zmienne, nie musze nigdzie tego definiowac?No i jak dodaje zamowienie to musze do tabeli zamowienia dodac zamowienie a nastepnie musze odczytac id zamowienia zeby powiazac je w produktach?
text Dzieki za podpowiedz, z sqlitem cz\y tam sql jestem na bakier, zawsze lubilem jsona Dzień dobry.
text Panowie, męczę się okrutnie z serializacją do XMLa, a właściwie z takim przypadkiem jednym. Dostałem specyfikację od człowieka któremu chcę dostarczać informację o produktach i podał mi taką strukturę pliku xml (w uproszczeniu):
code <?xml version="1.0" encoding="UTF-8"?><productsFeed> <schemaVersion>1.0</schemaVersion> <fileLastModificationDateTime>2018-07-26T10:15:30</fileLastModificationDateTime> <productsData> <product> <identification> <EANlist> <EAN>0001</EAN> <EAN>0002</EAN> </EANlist> <productId>id produktu</productId> <manufacturerProductId>id produktu producemta</manufacturerProductId> </identification> <description> <productName>nazwa produktu</productName> <productDescription>opis produktu</productDescription> <parametersList> <parameter> <parameterName>nazwa parametru</parameterName> <parameterValue>wartosc</parameterValue> <parameterUnit>jednostka</parameterUnit> </parameter> </parametersList> </description> </product> <product> <identification> <EANlist> <EAN>0003</EAN> <EAN>0004</EAN> </EANlist> <productId>id produktu</productId> <manufacturerProductId>id produktu producemta</manufacturerProductId> </identification> <description> <productName>nazwa produktu</productName> <productDescription>opis produktu</productDescription> <parametersList> <parameter> <parameterName>nazwa parametru</parameterName> <parameterValue>wartosc</parameterValue> <parameterUnit>jednostka</parameterUnit> </parameter> </parametersList> </description> </product> </productsData></productsFeed>
text I teraz tak, zupełnie nie wiem czy dobrze robię czy źle, ale na początek stworzyłem sobie takie coś (niepełne odwzorowanie, ale na początek wystarcza):
code public class productsFeed { public string schemaVersion; public string fileLastModificationDateTime; public ProdData productsData; }
code public class ProdData { public Product product; }
code public class Product { public Identifiaction identification; public Description description; }
code public class Identifiaction { public string productId; public string manufacturerProductId; }
code public class Description { public string productName; public string productDescription; }
text I później wypełniam tą strukturę danymi
core public void CreatePO(string filename) { XmlSerializer serializer = new XmlSerializer(typeof(productsFeed)); TextWriter writer = new StreamWriter(filename); productsFeed po = new productsFeed();
code po.schemaVersion = "1.0"; po.fileLastModificationDateTime = DateTime.Now.ToString();
code ProdData pd = new ProdData(); Product pr = new Product(); Identifiaction ident = new Identifiaction(); Description desc = new Description();
code po.productsData = pd; pd.product = pr; pr.identification = ident; pr.description = desc;
code ident.productId = "123"; ident.manufacturerProductId = "4567"; desc.productDescription = "Opis produktu"; desc.productName = "Nazwa produktu";
code serializer.Serialize(writer, po); writer.Close(); }
text Wszystko jest spoko, tworzy mi plik, wygląda ok, tylko utknąłem w momencie takim że sekcja <product> jest powtarzalna... Dżizas no, nie wiem jak się za to zabrać, tworzyć jakąś listę? Jak?
text Generalnie z taką płaską strukturą nie mam problemów bo pobieram sobie cały set danych z bazy, lecę po wierszach i odpowiednim konstruktorem podaję dane do listy którą następnie serializuję, ale jak się zagnieżdżają sekcje to nie wiem jak się do tego dobierać w ogóle i czy to co stworzyłem ma jakiś sens?W visual studio masz coś takiego Jak Paste special XML a dokładnie Edit -> Paste Special -> XML kopiujesz tam swojego xml i Ci tworzy klasy nie musisz się męczyć ręcznie tego pisać.
text A to wiem że jak wkleję to mi klasa wylatuje gotowa, ale dalej nie wiem jak ją wypełniać danymi, myślałem że jak ręcznie nadziubię to mi się rozjaśni coś ale nic nie dzwoni w żadnym kościele...
text Chodzi o to że tych sekcji <product> chciałbym mieć 100, 200... w jaki sposób je wypełniać i się do nich odwoływać?
text Cześć.Mam pewien problem. Napisałem apkę pod ASP .Net Core, która działa jako serwis pod Windowsem. Aplikacja ta ma za zadanie uruchomić mi inną aplikację WPF'a.Problem polega na tym że w trybie debugowania wszystko działa, natomiast po publikacji owa aplikacja WPF się nie odpala.Oto kod://Tworzę sobie obiekt nowej aplikacji: public Application app { get; set; }
code public class AplicationInstance: SingletonExtension<AplicationInstance> {
code public SessionOptions FTPSessionOptions { get; set; } public string FTPFingerprint { get; set; }
code public List<FileModel> CurrentFiles; public List<FileModel> OldFiles; public ObservableCollection<FileModel> DifrentFiles;
code private AplicationInstance() { CurrentFiles = new List<FileModel>(); OldFiles = new List<FileModel>(); DifrentFiles = new ObservableCollection<FileModel>();
code StartNewAplicationThread(); Task.Delay(1000).Wait(); }
code public Application app { get; set; } public void DispatchToApp(Action action) { app.Dispatcher.Invoke(action); } [STAThread] private void StartNewAplicationThread() { var appthread = new Thread(new ThreadStart(() => { try { app = new Application(); app.ShutdownMode = ShutdownMode.OnExplicitShutdown;
code app.Run(); } catch (Exception ex) { var t = ex.Message; ; } })); appthread.SetApartmentState(ApartmentState.STA); appthread.Start(); appthread.Name = "NSP Files -> All File Browser " + DateTime.Now;
text Następnie w innej klasie wywołuję sobie metodę DispatchToApp(()=>{....}) np:
code private static void StartWpfWindows() { WPFStartModel _newWPFApplication = new WPFStartModel(); _newWPFApplication.Title = "xxx"; _newWPFApplication.Files = AplicationInstance.Instance.DifrentFiles.ToList();
code AplicationInstance.Instance.DispatchToApp(() => {
code var appWindow = new WPFAplication.FileListWindow(_newWPFApplication); appWindow.Show(); }); }
text Klasa FileListWindow dziedziczy po System.Windows.Window
text Jakieś pomysły / rady ?Cześć. Nie rozumiem tego problemu kiedy tworzę update-database mam coś takiego :https://ibb.co/q7NQpMNa gdy chcę dodac migrację mam coś takiego :https://ibb.co/Rp2K4XLSzukam extensiona oferującego funkcjonalność która jest w wersji Professional, chodzi o ten pasek nad metodami / klasami, który pokazuje gdzie dana metoda/klasa jest wykorzystywana. Jest coś takiego?aki jest odpowiednik cin>> w c#?
text Polecam również zapoznać się dobrze ze stroną google.comKtoś tu kiedyś napisał, że jak się jest profesjonalistą, to zna się nie tylko zalety, ale też wady swojej technologii. Dlatego na rozmowach rekrutacyjnych zadaje pytania typu Co się Panu nie podoba w technologii/języku X? No właśnie, co byście odpowiedzieli, jakbyście dostali takie pytanie? Mi do głowy przychodzi jedynie niepotrzebny query syntax, obecność ref i out. Przydałyby się też w bibliotece standardowej klasy typu Result, Either, Option, żeby nie trzeba było ich przy każdym projekcie samemu pisać albo importować jakichś wielkich bibliotek. Co jeszcze? Czego brakuje C# i dotnetowi?
text Witam, mam mały problem. Mianowicie chce zrobić symulacje układu słonecznego. Dane każdej planety przechowuje w klasie która posiada scriptableobject.Problem pojawia się w momencie wyboru planety. Wybór planety chciałem zrobic za pomocą raycasthit czyli klikam na dana planetę i pojawiają się jakies informacje z nia związane.Wcześniej ze zwyklą klasą, aby pobrać dane z jakiegoś obiektu posiadającego jakiś skrypt robilem tak :
code Planet planet = hit.collider.gameobject.getComponent<planet>();
text Niestety w tym wypadku tak się nie da zrobić, bo konsila zwraca błąd ze nie jest to klasa monobehaviour.Jest na to jakiś inny sposób?ScriptableObject odczytujesz bez GetComponent. Po prostu dany prefab ma MonoBehaviour obsługujący planetę. Ten MonoBehaviour może mieć pole typu Twojego ScriptableObjectu. I to pole odczytujesz bezpośrednio instancjaMonoBehaviour.scriptableobject, ale to pole ustawiasz w edytorze (drag and drop SO do obiektu z dołączonym MB).ęzyki, frameworki, wzorce, strategie i technologie które na co dzień używacie w pracy jako programiści .net
text Przeczytałem sporo artykułów z różnej maści grafami i prezentacjami, ale nie mogę sobie jakoś poukładać jak działa refresh token.A w zasadzie jak on ma zminimalizować ryzyko nieautoryzowanego dostępu.
text Z tego co zrozumiał z przeczytanych artykułów to:
text Klient dostaje Access Token z krótką datą ważności. Klient podczas żądania dostępu do strzeżonego zasobu po wygaśnięciu daty ważności tokenu dostaje status 401. Przy kolejnym żądaniu niby klient otrzymuje nowy Refresh Token z dłuższą datą ważności.
text Ale niby, że jak? Wystawiany jest dodatkowy endpoint w API, który weryfikuje czy klient posiada Access Token i generuje nowy Refresh Token, który posiada te same uprawnienia do zasobów co Access Token? Przecież to bez sensu. Tak samo może ktoś przechwycić Refresh Token jak i Access Token. Nie lepiej po prostu dawać dłuższy czas wygaśnięcia dla Access Token?Później klient uwierzytelnia się za pomocą Refresh Token? Po co w zasadzie mu wtedy pierwotny Access Token?Ktoś może mi to jakoś łopatologicznie wyjaśnić?
text Osobisce sam mam pewne watpliwosci co do dzialania tokenow takze nie traktuj mojego posta przesadnie powaznie no ale widze to tak:
text Klient dostaje Access Token z krótką datą ważności.Krotki to dosyc wzgledne pojecie takze raczej patrzylbym na to z perspektywy ze access token nie moze miec dluzszego czasu zycia od refresh tokena bo wtedy calosc raczej traci sens.
text Klient podczas żądania dostępu do strzeżonego zasobu po wygaśnięciu daty ważności tokenu dostaje status 401.No to powinienes uzyskiwac raczej bez wzgledu na to czy udostepniasz resfresh tokena czy nie.
text Przy kolejnym żądaniu niby klient otrzymuje nowy Refresh Token z dłuższą datą ważności.No tego nie do konca rozumiem. To znaczy pewnie mozna jak najbardziej cos takiego zaimplementowac. Tylko raczej nie widze sensu aby czas zycia zwiekszal sie z kazdym zalogowaniem uzytkownika. Raczej widzialbym to jako stala wartosc.
text Zasadniczo wydaje mi sie ze refresh token nie ma nic wspolnego z minimalizowaniem nieautoryzowanego dostepu (no chyba ze patrzymy na to przez pryzmat krotszego czasu zycia access tokena,a co za tym idzie potencjalnie mniejsza ilosc operacji jaka ktos moze wykonac przy jego uzyciu w przypadku jego utrarty) a raczej z polepszeniem tzw user experience. Czyli klient nie musi co chwile strzelac w jakiegos sign_in a dostaje nowy access token w ramach posiadania refresh tokena (oczywiscie w przy uwzglednieniu faktu ze czas refresh tokena nie ulegl przedawnieniu).Czyli flow wyglada mniej wiecej:
text User loguje sie z loginem i passwordem. Api generuje access tokena z refresh tokenem. Tego drugiego raczej bym chcial jakos sledzic aby w skrajnym przypadku wrzucic go na jakas blackliste.(DB albo jakis Redis ?) Teraz po stronie klienta: a) Jesli access token jest wciaz zywy to wszyscy sa szczesliwi. b) Jesli access token jest martwy ale mamy refresh tokena to dostajemy nowego access tokena z refresh tokenem i znowu wszyscy sa szczesliwi. c) Jesli access token jest martwy i refresh token jest martwy no to kaput. Logujemy sie ponownie.
text 100x łatwiej i bezpieczniej jest trzymać te małe metadane (typu długość ważności sesji czy ID użytkownika) po stronie backendu w jakimś key-store value typu Redis. Na poważnie wzięte bezpieczeństwo i tak wymaga stanu po stronie serwera (np ograniczanie liczby otwartych sesji dla jednego użytkownika, opcja wylogowania z innych urządzeń, wybiórcze wylogowywanie użytkowników po wykryciu nieprawidłowości itp itd), więc po co dodatkowo dorabiać akrobacje z JWT na frontendzie? Przesyłajmy tylko kompaktowe ID sesji w ciastku, a po stronie serwera wstawmy w Redisie słownik z ID sesji jako kluczem i metadanymi jako wartością. Nikt nie udowodnił, że żonglowanie JWT na frontendzie jest bezpieczniejsze od starych sprawdzonych ciastek z IDkami sesji. Z drugiej strony wymyślanie mechanizmu bezpieczeństwa samemu jest bardziej narażone na błędy niż użycie sprawdzonego gotowca opartego o klasyczne ciasteczka z IDkami sesji. JWT są natomiast spoko gdy są jednorazowego użytku (a tak są używane np na backendzie).
text Pojedyncze konta - sam obsługujesz tabelę z użytkownikami, sam ogarniasz rejestracje.Konta służbowe - wymagasz uwierzytelniania z zewnątrz, np. Azure, Office365 (konto służbowe, nie osobiste)Uwierzytelnianie Windows - logowanie do aplikacji na podstawie konta systemu Windows, na którym jest zainstalowana aplikacja.
text Poprawcie jeśli piszę źle i uważam, że ten wątek jest niepotrzebny, ponieważ takie rzeczy idzie wyczytać z neta...Mam taki test:
code [Fact] public async Task Should_Create_Group() { UseAuthenticatedRequest();
code var command = new CreateGroup { Name = "G4", Description = "Test Description" };
code var response = await Client.PostAsync("/api/groups", CreatePayload(command)); response.EnsureSuccessStatusCode(); response.Headers.Location.ShouldNotBeNull();
code var group = await GetGroup(GetResourceIdFromPath(response.Headers.Location.LocalPath)); group.Name.ShouldBe(command.Name); group.Description.ShouldBe(command.Description); group.CreatedAt.ShouldBe(/* ? */); }
text Przed zapisaniem do bazy robię coś w stylu group.CreatedAt = DateTime.UtcNow. Jak mam napisać test, żeby mieć pewność, że nie zapomniałem przypadkiem ustawić daty utworzenia? Próbowałem zautomatyzować takie operacje, nadpisując SaveChanges, ale było z tym więcej problemów niż korzyści. ;(Może coś w stylu tą pomiędzy wywołaniem requestu a odbiorem danych. Czyli prze PostAsync ustawiasz w teście datę. Potem po wywołaniu clienta. A group.CreatedAt powinna być pomiędzy. Ja pewnie szedłbym w te stronę. A to jest twoje Api czy może mockujesz tego clienta?. Bo ja jak miałem podobne rzeczy to raczej robiłem mocka i sprawdzałęm jak się zachowuje kod w zależności od responsaMyślałem też, żeby napisać sobie abstrakcję nad DateTime (IDateTimeProvider) i wstrzykiwać ją do serwisów. Wtedy mógłbym sobie w testach integracyjnych podstawić implementację zwracającą zawsze jakąś określoną datę. Ale to chyba za dużo kombinowania.Mógłbyś rozwinąć? Jeśli mam asercję group.CreatedAt.ShouldBe(...), to co mam tu wpisać?
text Jakich problemów? O ile dobrze pamiętam to raptem jakieś kilkanaście linijek kodu.
text Tak jak myślę o tym, próbując przewidzieć Twoje kontrargumenty, to tak naprawdę te problemy nie są jakieś znaczące. ;) Pierwszym miało być to, że ograniczam się do posiadania zawsze właściwości o tej samej nazwie, np. CreatedById, podczas gdy czasami lepiej jest dać np. OwnerId lub AuthorId. Ale jeśli mam anemiczny model i CRUDa, to IMO da się z tym żyć. Co prawda trzeba będzie trochę pokonfigurować AutoMappera, ale poprawność tych konfiguracji można łatwo sprawdzić w jednym teście. Drugim problemem miała być mniejsza czytelność w sytuacji, gdy część właściwości ustawiamy w serwisie, a część w SaveChanges, ale to deż dyskusyjne.
text Taki wrapper na datetime z interfejsem ma może sens, ale pod kątem testów jednostkowych, nie integracyjnych.
text Czyli co sugerujesz? Wstrzykiwać IDateTimeProvider tylko wtedy, gdy faktycznie trzeba coś przetestować jednostkowo, a używać DateTime.UtcNow w pozostałych przypadkach?edna z rzeczy ktora u mnie w firmie caly czas podkreslaja zeby nie projektowac API pod testy. Moim zdaniem pierwsza odpowiedz ma na najwiecej sensu (sprawdzic czas przed i po requescie i powinna byc pomiedzy.
text Moim zdaniem nie warto gmatwac kodu tylko po to zeby raz na 4 lata nie miec buga bo zagmatwany kod ma srednio wiecej bugow wiec srednio dodasz sobie i wszystkim co tego kodu korzystaja wiecej roboty.