Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
New Yorp New Yorp
Jul 18, 2003

Only in Kenya.
Pillbug

Dietrich posted:

It'd be pretty strange that 99% of modern development proceeds under git and microsoft is moving to git if it weren't better than svn or tfvc.

"Better" is relative.

Every organization isn't Microsoft. There are plenty of businesses whose primary profit center isn't software but yet employs software developers, and those types of businesses tend to be behind the curve. Git isn't always a good fit for those organizations because they don't need the advanced features, they're comfortable with the tools they're using today, and the cost of disruption/retraining would vastly outweigh the benefits. I see this all the time. Many of them are aware of Git, and many of them are saying "No thanks, we're good."

Adbot
ADBOT LOVES YOU

Dietrich
Sep 11, 2001

Sure, there's lots of companies out there that don't give two shits about being modern or using the best tools, but I don't think that's an effective argument against being modern or using the best tools. Living paycheck to paycheck and eating fast food all the time "works" for plenty of people as well.

Munkeymon
Aug 14, 2003

Motherfucker's got an
armor-piercing crowbar! Rigoddamndicu𝜆ous.



Dietrich posted:

It'd be pretty strange that 99% of modern development proceeds under git and microsoft is moving to git if it weren't better than svn or tfvc.

Microsoft moved the Windows team, an operating system development team that's somewhat geographically distributed, to Git, a source control system designed for geographically distributed developers of an operating system? Huh, yeah, I can't think of why they'd do such a thing.

Otherwise, Microsoft is embracing Git because it's popular and they realized (later than we'd all have liked!) that they can't just get people to use their products through sheer dint of being Microsoft.

Dietrich
Sep 11, 2001

Munkeymon posted:

Otherwise, Microsoft is embracing Git because it's popular and they realized (later than we'd all have liked!) that they can't just get people to use their products through sheer dint of being Microsoft.

Unpack this a bit.

Munkeymon
Aug 14, 2003

Motherfucker's got an
armor-piercing crowbar! Rigoddamndicu𝜆ous.



Dietrich posted:

Unpack this a bit.

Am I supposed to come to the realization that Git is popular because it's the best? Hell, it's not even the least bad DVCS.

I'm certainly not going to argue that TFS is better, but I would point out that TFS has features that some people see as requirements or just plain like, so I suppose you could say it has different strengths.

For the record, I'm not a big fan of TFS and you can look up a rant I went on in the horrors thread about a year ago for my complaints about it, but just because Microsoft is supporting it doesn't mean it's better, just that it's popular. Same as how Linux Subsystem for Windows isn't a sign they think Ubuntu is superior to Windows. Again, it's not even the least bad Linux, it's just popular.

Dietrich
Sep 11, 2001

Munkeymon posted:

Am I supposed to come to the realization that Git is popular because it's the best? Hell, it's not even the least bad DVCS.

I'm certainly not going to argue that TFS is better, but I would point out that TFS has features that some people see as requirements or just plain like, so I suppose you could say it has different strengths.

For the record, I'm not a big fan of TFS and you can look up a rant I went on in the horrors thread about a year ago for my complaints about it, but just because Microsoft is supporting it doesn't mean it's better, just that it's popular. Same as how Linux Subsystem for Windows isn't a sign they think Ubuntu is superior to Windows. Again, it's not even the least bad Linux, it's just popular.

When it comes to software that you didn't write and that you're going to be using to interact with other computers and people, popularity is incredibly important. If hg was the lingua franca of opensource then hg would be what we're talking about now. Basically, git is the best because it's popular.

Munkeymon
Aug 14, 2003

Motherfucker's got an
armor-piercing crowbar! Rigoddamndicu𝜆ous.



Dietrich posted:

When it comes to software that you didn't write and that you're going to be using to interact with other computers and people, popularity is incredibly important. If hg was the lingua franca of opensource then hg would be what we're talking about now. Basically, git is the best because it's popular.

Its popularity make it the best choice for Microsoft to throw resources behind and the best choice to learn if you've only got time to learn one VCS, yes, but those are not what most people mean when they hear "it's the best". Java is more popular than C#, so where's my VS Java integration?

(I actually am curious how hard it'd be to get Java to compile to MSIL or C# to JVM but apparently not curious enough to try to write a compiler, heh)

Dietrich
Sep 11, 2001

Munkeymon posted:

Its popularity make it the best choice for Microsoft to throw resources behind and the best choice to learn if you've only got time to learn one VCS, yes, but those are not what most people mean when they hear "it's the best". Java is more popular than C#, so where's my VS Java integration?

(I actually am curious how hard it'd be to get Java to compile to MSIL or C# to JVM but apparently not curious enough to try to write a compiler, heh)

Your VS Java integration is being held up by Oracle being assholes.

Munkeymon
Aug 14, 2003

Motherfucker's got an
armor-piercing crowbar! Rigoddamndicu𝜆ous.



Dietrich posted:

Your VS Java integration is being held up by Oracle being assholes.

That... would not surprise me, actually.

spaced ninja
Apr 10, 2009


Toilet Rascal
While I have yet to see a C# to JVM compiler yet (I'm sure it exists somewhere). I have seen a number of programs that will convert your C# code to Java. I can't imagine being crazy enough to use it in production though.

NihilCredo
Jun 6, 2011

iram omni possibili modo preme:
plus una illa te diffamabit, quam multæ virtutes commendabunt

The JVM to CLR transpiler was called IKVM.NET, it was reasonably popular and was only officially abandoned like a few weeks ago, so hey if you want a side project to pick up... :v:

CLR to JVM, I don't think any project went past the proof of concept stage. Unless you count Xamarin Android, that is.

Munkeymon
Aug 14, 2003

Motherfucker's got an
armor-piercing crowbar! Rigoddamndicu𝜆ous.



NihilCredo posted:

The JVM to CLR transpiler was called IKVM.NET, it was reasonably popular and was only officially abandoned like a few weeks ago, so hey if you want a side project to pick up... :v:

CLR to JVM, I don't think any project went past the proof of concept stage. Unless you count Xamarin Android, that is.

Which compiles to Dalvik*-specific bytecode, right?

*and/or whatever their new runtime is called

Gul Banana
Nov 28, 2003

Pilsner posted:

How can you say the benefits always outweight the costs, no matter how great the costs?

what i said is that when people argue for switching to git it's not due to a lack of costs, but due to benefits outweighing the costs. if you want to contrive a scenario where any change at all is absurdly costly then feel free.

edit: wow, this post looks way ruder in the morning than it did at night. please mentally rephrase it when reading

Gul Banana fucked around with this message at 02:08 on Oct 14, 2017

redleader
Aug 18, 2005

Engage according to operational parameters

NihilCredo posted:

The JVM to CLR transpiler was called IKVM.NET, it was reasonably popular and was only officially abandoned like a few weeks ago, so hey if you want a side project to pick up... :v:

CLR to JVM, I don't think any project went past the proof of concept stage. Unless you count Xamarin Android, that is.

IKVM is still amazing to me. You throw this thing in with some JARs, and they just work side by side with your .NET assemblies with no friction. IIRC you could even navigate toy reference in VS.

After giving it almost no thought, I suspect that JVM -> CLR would be easier than the other way round, since the CLR has much better support for generics.

brap
Aug 23, 2004

Grimey Drawer

Dietrich posted:

It'd be pretty strange that 99% of modern development proceeds under git and microsoft is moving to git if it weren't better than svn or tfvc.

I think the same thing, but this is just an appeal to authority which sort of limits the effect.

Dietrich posted:

Your VS Java integration is being held up by Oracle being assholes.

I don't know why you'd want/need this when IntelliJ exists.

Mr Shiny Pants
Nov 12, 2012
I think MS chose git because it is popular, that they needed to invent something like LFS for it seems like it might not have been the best choice for them.

Same with architecting .Net Core to something like NPM, their obsession with HTTP performance for Kestrel etc.

IMHO ofcourse :)

brap
Aug 23, 2004

Grimey Drawer
git is actually pretty performant. LFS is a symptom of Windows being one of the largest and longest-running software projects in existence. I couldn't say whether it would have made more sense to have a version control system that's just for Windows-scale stuff.

Mr Shiny Pants
Nov 12, 2012

fleshweasel posted:

git is actually pretty performant. LFS is a symptom of Windows being one of the largest and longest-running software projects in existence. I couldn't say whether it would have made more sense to have a version control system that's just for Windows-scale stuff.

True, they probably did not do it on a lark. Maybe they took a long hard look at Git and others and decided that writing LFS would be worth it compared to other solutions.

New Yorp New Yorp
Jul 18, 2003

Only in Kenya.
Pillbug
Pedant note, so people who are unfamiliar with this stuff don't get confused:

Git LFS isn't a Microsoft thing, it's Large File Storage -- it handles large binary files by putting the binary in some sort of blob storage and only storing a pointer to the blob in the repo. This reduces repo bloat but allows large, uncompressable binaries to be contained in a repo alongside code.

Microsoft wrote Git VFS (Virtual File System) for Windows -- it works by making it look as though all of the files are present in the repo, but only actually retrieves the file data when the file is touched.

Mr Shiny Pants
Nov 12, 2012
Got those mixed up.......

Point stands though. :)

epswing
Nov 4, 2003

Soiled Meat
When implementing user authorization/authentication in a WPF app, is the following article still considered the Right Way to do it, with IIdentity and IPrincipal? It was posted in 2014, last revised in 2016.

https://social.technet.microsoft.com/wiki/contents/articles/25726.wpf-implementing-custom-authentication-and-authorization.aspx

EssOEss
Oct 23, 2006
128-bit approved
WPF and non-windowsstore desktop apps in general have not changed much in 10 years and will not do so ever, probably. So yeah, whatever you read that is a few years old is still valid for sure.

putin is a cunt
Apr 5, 2007

BOY DO I SURE ENJOY TRASH. THERE'S NOTHING MORE I LOVE THAN TO SIT DOWN IN FRONT OF THE BIG SCREEN AND EAT A BIIIIG STEAMY BOWL OF SHIT. WARNER BROS CAN COME OVER TO MY HOUSE AND ASSFUCK MY MOM WHILE I WATCH AND I WOULD CERTIFY IT FRESH, NO QUESTION

LongSack posted:

Thanks for the response. While I was puzzling over it this morning, I thought harder on the problem and realized that I was unable to come up with a single use case where I would actually need an "or" search. When searching for a ticket, I generally either have one concrete piece of information (say a Task or a Work Order number) or else I have a date range and possibly a Requester. My existing search handles all that as is, so I'm not gonna mess with it.

If you change your mind, check out LinqKit. It does what you're after.

underage at the vape shop
May 11, 2011

by Cyrano4747


What am I doing wrong here, it says numPlayers doesnt exist. It doesn't consider it an error when I don't make it private but I have to.

Drastic Actions
Apr 7, 2009

FUCK YOU!
GET PUMPED!
Nap Ghost

underage at the vape shop posted:



What am I doing wrong here, it says numPlayers doesnt exist. It doesn't consider it an error when I don't make it private but I have to.

code:
public class Game
{
	private int[] opponent;

	public Game(int numPlayers, int numRounds)
	{
		opponent = new int[numPlayers];
	}
}

underage at the vape shop
May 11, 2011

by Cyrano4747
yeah i figured that out and came back to edit, and felt dumb. I haven't done any C sharp for a while, been snowed under with C microcontroller stuff instead.

Joda
Apr 24, 2010

When I'm off, I just like to really let go and have fun, y'know?

Fun Shoe
Is there any way to tell Visual Studio to be a pedantic piece of poo poo to you about the structure of its build file. Apparently it doesn't raise as much as a warning when you're missing and EndProject marker in a .sln, but production systems aren't quite as lenient.

bobua
Mar 23, 2003
I'd trade it all for just a little more.

I've got an app that's actually sort of a main app, and sub applications. I like to keep it together because they share a lot of things, and I like to stick with click once installs because it makes updating a breeze. Recently, I've wanted the ability to add a direct shortcut to one of the sub apps, so the end user can click an icon from the desktop and not get the full app, but one of the child windows. Worked great with command line arguments in visual studio, but then I realized that click once is sort of a piece of poo poo as far as command line arguments go.


Ideally, installing the app on a pc would add it's main icon, and then I could place an icon manually for one of the sub windows. Is there an easy way to do this where the click once auto update feature would still work? As is, I'm just changing the assembly name and installing the app twice with a small change in the startup code, but it's sort of annoying to have to do that every time I want to push an update to one of the apps.

Xik
Mar 10, 2011

Dinosaur Gum

Joda posted:

Is there any way to tell Visual Studio to be a pedantic piece of poo poo to you about the structure of its build file. Apparently it doesn't raise as much as a warning when you're missing and EndProject marker in a .sln, but production systems aren't quite as lenient.

Sort of comedy option is to create a test to read the .sln file and check for it.

I've never used it for this specific case (reading and checking a solution file) but I sometimes would create a separate little folder or project of "not unit tests" to check for special snowflake things for interacting with [legacy system].

TheBlackVegetable
Oct 29, 2006

Xik posted:

Sort of comedy option is to create a test to read the .sln file and check for it.

I've never used it for this specific case (reading and checking a solution file) but I sometimes would create a separate little folder or project of "not unit tests" to check for special snowflake things for interacting with [legacy system].

I think a set of sanity check tests are a good idea too. I've created tests before for example that use reflection to check that I haven't forgotten to add specific attributes to class members.

I've also used T4 to when starting a new project to bootstrap all the library and exe project files with all the options, references and basic files that would otherwise be manually added. I'm thinking about adding templates to generate tests as well (again, possibly using reflection to create the test scaffolding for each of the types in the projects).

It's all about having the code do the bulk of the manual, repetitive, error prone work and to ensure consistency across the solution.

LongSack
Jan 17, 2003

Is there a way to get back to a window's DataContext in a Binding from a child control? I can get back to the Window using RelativeSource, but that doesn't get me back to the DataContext.

What I was trying to do us use a behaviour to handle double-clicking on an item in a ListBox, but when I bind to the attached property it doesn't work because the data context of the ListBoxItem is the ItemsSource.

My Behaviour:
C# code:
        // Handle MouseDoubleClick

        public static readonly DependencyProperty MouseDoubleClickBehaviourProperty = 
            DependencyProperty.RegisterAttached("MouseDoubleClickBehaviour", typeof(ICommand),
            typeof(Behaviours), new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.None, 
            OnMouseDoubleClickChanged));

        public static ICommand GetMouseDoubleClickBehaviouor(DependencyObject d) => 
            (ICommand)d.GetValue(MouseDoubleClickBehaviourProperty);
        public static void SetMouseDoubleClickBehaviour(DependencyObject d, ICommand value) => 
            d.SetValue(MouseDoubleClickBehaviourProperty, value);
        public static void OnMouseDoubleClickChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            if (d is Control control)
            {
                control.MouseDoubleClick += (s, a) =>
                {
                    ICommand command = GetMouseDoubleClickBehaviouor(control);
                    if (command != null)
                    {
                        if (command.CanExecute(a))
                        {
                            command.Execute(a);
                        }
                    }
                };
            }
        }
and the XAML:
C# code:
<ListBox ... local:Behaviours.MouseDoubleClickBehaviour={Binding AttachmentDoubleClickCommand} ... />
I couldn't figure out a way to get back to the data context from the listboxitem, so ended up handling it in code-behind:
C# code:
        private void lbAttachments_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            ICommand cmd = ((MainViewModel)DataContext).AttachmentDoubleClickCommand;
            if (cmd.CanExecute(null))
            {
                cmd.Execute(null);
            }
        }
Is there another/better way to do this? TIA

putin is a cunt
Apr 5, 2007

BOY DO I SURE ENJOY TRASH. THERE'S NOTHING MORE I LOVE THAN TO SIT DOWN IN FRONT OF THE BIG SCREEN AND EAT A BIIIIG STEAMY BOWL OF SHIT. WARNER BROS CAN COME OVER TO MY HOUSE AND ASSFUCK MY MOM WHILE I WATCH AND I WOULD CERTIFY IT FRESH, NO QUESTION
I feel stupid. I'm trying to create a new ASP.NET Core 2.0 project and the only option available in my Visual Studio is targetting .NET Framework. Am I misunderstanding something here?

Edit: Nevermind, I found the right Google-fu and it turns out that dropdown means nothing for .NET Core projects. Not confusing at all, cheers Microsoft...

putin is a cunt fucked around with this message at 11:17 on Oct 26, 2017

putin is a cunt
Apr 5, 2007

BOY DO I SURE ENJOY TRASH. THERE'S NOTHING MORE I LOVE THAN TO SIT DOWN IN FRONT OF THE BIG SCREEN AND EAT A BIIIIG STEAMY BOWL OF SHIT. WARNER BROS CAN COME OVER TO MY HOUSE AND ASSFUCK MY MOM WHILE I WATCH AND I WOULD CERTIFY IT FRESH, NO QUESTION
Okay I have another dumb question. I'm trying to integrate Auth0 into a brand new project, so no legacy code or anything I would consider likely to mess with things. I literally created the project for this purpose.

I followed the Auth0 tutorial for an ASP.NET Core website to the letter, but somehow I've wound up with an error on my Home/Index action that says "Correlation failed." Googling for the exception seems to show that 90% of the time it's some kind of cookie issue, but my cookies are completely clear and I have no idea what else to even try. I can login fine to Auth0 by manually inputting my login page URL - it redirects to Auth0 and I sign in fine, and get returned to my app. But the app just shows this frustratingly vague message. Anyone ever encountered this? If it makes any difference this seems to be something that can occur with ANY Open ID Connect provider, not just Auth0.

excidium
Oct 24, 2004

Tambahawk Soars
So I got help in here previously in making a model definition work when serializing XML to JSON. I have another question regarding conditional logic with the models.

Say I have an XML tag that may/may not be present. Within that tag, it could be formatted in one of 8 different ways. How do I set up my models to handle this and not pass along a bunch of blank data?

Really dumbed down XML example:

XML code:
<field>
   <default>
      // can be any of these options, but only 1 of them.
      <external id="asdf" />
      <calculation>
         <add>1</add>
      </calculation>
      <conditional>
         <test value="1" />
      </conditional>
   </default>
   <minimum>
      ...any of the above option types (external, calculation, conditional, etc).
   </minimum>
</field>
I can understand how to handle the field, default, minimum parts, but not how to prevent passing along a bunch of blank objects for the option types that are not used.

Just-In-Timeberlake
Aug 18, 2003
Having a really weird issue here, that I'm not even sure how to google for or dive into to see what is going on.

Have a recordset being returned from MSSQL that I'm loading into a DataTable. When I try to populate a string with one of the data fields the DataRow is showing that field is an empty array (so, db NULL I think) so it throws an error. The thing is when I run that stored procedure in SSMS the returned record most certainly has data in that field. If I wrap that output field in the stored procedure with an ISNULL(result, ' ') then the DataRow shows the data = ' ', even though in SSMS that data is not NULL in the result table.

Not really sure where the error is occurring. The ISNULL check makes me think in MSSQL but there's data being returned in the result set, so maybe it's in the DataRow? Any insight or where I can start looking for a solution would be most appreciated.

Munkeymon
Aug 14, 2003

Motherfucker's got an
armor-piercing crowbar! Rigoddamndicu𝜆ous.



excidium posted:

So I got help in here previously in making a model definition work when serializing XML to JSON. I have another question regarding conditional logic with the models.

Say I have an XML tag that may/may not be present. Within that tag, it could be formatted in one of 8 different ways. How do I set up my models to handle this and not pass along a bunch of blank data?

Really dumbed down XML example:

XML code:
<field>
   <default>
      // can be any of these options, but only 1 of them.
      <external id="asdf" />
      <calculation>
         <add>1</add>
      </calculation>
      <conditional>
         <test value="1" />
      </conditional>
   </default>
   <minimum>
      ...any of the above option types (external, calculation, conditional, etc).
   </minimum>
</field>
I can understand how to handle the field, default, minimum parts, but not how to prevent passing along a bunch of blank objects for the option types that are not used.

You don't mention which serializer you're using so I'm assuming Newtonsoft https://stackoverflow.com/questions/6507889/how-to-ignore-a-property-in-class-if-null-using-json-net

chippy
Aug 16, 2006

OK I DON'T GET IT
Anyone know of a good CMS-type component that can be dropped into an existing MVC application? I guess I'm thinking some sort od document editor, Views for rendering them, etc, but not like a full scale application. Everything I'm finding is more like a full-on framework with its own routing, core application etc.

Munkeymon
Aug 14, 2003

Motherfucker's got an
armor-piercing crowbar! Rigoddamndicu𝜆ous.



Just-In-Timeberlake posted:

Having a really weird issue here, that I'm not even sure how to google for or dive into to see what is going on.

Have a recordset being returned from MSSQL that I'm loading into a DataTable. When I try to populate a string with one of the data fields the DataRow is showing that field is an empty array (so, db NULL I think) so it throws an error. The thing is when I run that stored procedure in SSMS the returned record most certainly has data in that field. If I wrap that output field in the stored procedure with an ISNULL(result, ' ') then the DataRow shows the data = ' ', even though in SSMS that data is not NULL in the result table.

Not really sure where the error is occurring. The ISNULL check makes me think in MSSQL but there's data being returned in the result set, so maybe it's in the DataRow? Any insight or where I can start looking for a solution would be most appreciated.

Your database driver might be setting an option that causes some operator to act differently than SSMS. Try running select @@options through both your driver and SSMS and see if they're different.

SQL code:
DECLARE @options INT
SELECT @options = @@OPTIONS

PRINT @options
IF ( (1 & @options) = 1 ) PRINT 'DISABLE_DEF_CNST_CHK' 
IF ( (2 & @options) = 2 ) PRINT 'IMPLICIT_TRANSACTIONS' 
IF ( (4 & @options) = 4 ) PRINT 'CURSOR_CLOSE_ON_COMMIT' 
IF ( (8 & @options) = 8 ) PRINT 'ANSI_WARNINGS' 
IF ( (16 & @options) = 16 ) PRINT 'ANSI_PADDING' 
IF ( (32 & @options) = 32 ) PRINT 'ANSI_NULLS' 
IF ( (64 & @options) = 64 ) PRINT 'ARITHABORT' 
IF ( (128 & @options) = 128 ) PRINT 'ARITHIGNORE'
IF ( (256 & @options) = 256 ) PRINT 'QUOTED_IDENTIFIER' 
IF ( (512 & @options) = 512 ) PRINT 'NOCOUNT' 
IF ( (1024 & @options) = 1024 ) PRINT 'ANSI_NULL_DFLT_ON' 
IF ( (2048 & @options) = 2048 ) PRINT 'ANSI_NULL_DFLT_OFF' 
IF ( (4096 & @options) = 4096 ) PRINT 'CONCAT_NULL_YIELDS_NULL' 
IF ( (8192 & @options) = 8192 ) PRINT 'NUMERIC_ROUNDABORT' 
IF ( (16384 & @options) = 16384 ) PRINT 'XACT_ABORT'
If you want to know what's different. Then you'd go into SSMS's options under Query Execution to synchronize them so you get representative results with SSMS.

Munkeymon fucked around with this message at 16:58 on Oct 31, 2017

Portland Sucks
Dec 21, 2004
༼ つ ◕_◕ ༽つ
What exactly is the selling point behind using an ORM?

I keep running across stuff like EF as the choice way to interact with data sources, but all of the selling points seem to be stuff like "never use SQL again." If I don't have any issues coming up with SQL queries on the spot are they just not for me?

I've got thousands of DB tables that I could potentially be pulling and aggragating data from. What benefit is there for me to build some secondary abstraction of them to link an ORM to when I could just write a quick SQL query and get the result back as a data structure that is super simple to parse?

I'm trying really hard not to be a close minded goon, but whenever I look at ORM's all I see is enough overhead that I'll probably be finished with my project before I implement the architecture needed to make the ORM function with our databases.

Adbot
ADBOT LOVES YOU

Joda
Apr 24, 2010

When I'm off, I just like to really let go and have fun, y'know?

Fun Shoe
Two major advantages off the top of my head is the ability to multi-thread your database queries and doing data pre- and post-processing in a language that isn't SQL.

Also, you can have a single server codebase, in stead of one for database queries and one for all the other stuff.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply