New around here? Register your SA Forums Account here!

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
The MUMPSorceress
Jan 6, 2012


^SHTPSTS

Gary’s Answer

MrMoo posted:

He covered that, he calls it "arena" according-to-him, but not what other people (tm) may understand as that. Invalid entity is fairly mild and Blow says a crash would be better than hiding it because you can go debugging and fix it quickly. The allocator scheme she creates allegedly does not eliminate an incorrect but valid entity being presented due to possessing a stale reference and so the language is not really helping at all and required the same development strategy other languages require too.

Jonathan blow literally said women are mentally less capable of programming computers. why are you bending over so hard to try to give him cover

Adbot
ADBOT LOVES YOU

Powerful Two-Hander
Mar 9, 2004

Mods please change my name to "Tooter Skeleton" TIA.


I'm looking at moving our godawful database script management into something a bit better I.e. That actually manages the individual artefacts instead of being a massive pile of incremental change scripts that may or may not have been built on the right version and I've figured I can pretty easily manage procs views and functions just as scripts and pull out anything that's changed in a branch via a Git diff BUT wtf do I do with tables?


i mean, my first thought is just have a single script that creates the table as of a point in time and then adds incremental changes via sequential Alter statements and then I thought "well I want this to be rerunnable" so I added checks vs sys.information_schema to see if an individual table /column/constraint existed before each statement and now I'm thinking this is madness.

some team at work are using liquibase but that just seems to do the exact same thing except via its own definition language and with an extra executable in the way that you have to run to generate your actual scripts. also no possible way am I gonna do a "copy rows to a shadow table, drop and recreate and copy back" that's just asking for trouble.

Shaggar
Apr 26, 2006
import your database into a visual studio database project

prisoner of waffles
May 8, 2007

Ah! well a-day! what evil looks
Had I from old and young!
Instead of the cross, the fishmech
About my neck was hung.

Sapozhnik posted:

What is an ecs

a miserable pile of systems

seriously tho I kinda want to decompile alphabeard's Caves of Qud

Powerful Two-Hander
Mar 9, 2004

Mods please change my name to "Tooter Skeleton" TIA.


Shaggar posted:

import your database into a visual studio database project

tried this but its way of generating the change scripts is to try and connect across prod/test and do a diff but we have zero environment control so at any one given time dev will have changes that probably shouldn't go live. plus I want to version those components separately so I can do a 'what's the history of the viewButts proc" and see who hosed it up. also iirc it does the "table alter by drop and recreate" thing which makes me nervous.

crazypenguin
Mar 9, 2005
nothing witty here, move along
that rear end in a top hat is wrong anyway.

this is exactly the same argument that people bring up with, like, Haskell not having null pointers. "OOHOHOHO, but then when you need to represent absence, you use Maybe which JUST LIKE A NULL!!" yeah, no poo poo dumbass, the point is you're free of null everywhere else.

I happened to have watched the original rust conf video last week, and it was 100% "figuring out how to do traditional gamedev poo poo in rust" and it was actually a decent talk. It was a pretty standard "we restrained ourselves with this tool, but now we need to figure out how to do this traditional thing under these constraints."

Circumventing the borrow checker? Yeah, in exactly one way: whenever you have entities with persistent references to other entities, you might discover they're stale. That's it. And it's not like her solution causes memory corruption or anything. And it not like those kinds of reference are even that common. It's Maybe types all over again.

And meanwhile, literally everything else is still getting checked by the borrow checker.

blowhard is mad because Rust got lots of attention, and he feels he deserves all that attention because he feels he's the hottest poo poo ever.

prisoner of waffles
May 8, 2007

Ah! well a-day! what evil looks
Had I from old and young!
Instead of the cross, the fishmech
About my neck was hung.

crazypenguin posted:

blowhard is mad because Rust got lots of attention, and he feels he deserves all that attention because he feels he's the hottest poo poo ever.

"why doesn't everyone admire me the way that my internet sycophancy club does? it must be that they're stupid, as well as wrong."

DONT THREAD ON ME
Oct 1, 2002

by Nyc_Tattoo
Floss Finder
does jblow have fans within the game industry or is his club made out of gamers and aspiring game devs?

kugutsu
Dec 31, 2008
his complaint is a non-issue, practically. I've used several ecs libraries over the years and all of them have had some kind of unique reference id for keeping persistent references to other entities. unity even bakes it into the entity id itself, as far as I know. it's really obvious that using a reference directly to a raw entity id, which may be removed or reused from frame to frame, is a bad idea and I'm pretty sure nobody does it in real life.

it's also probably impossible or practically impossible to statically prove that an entity id hasn't been removed from play since it was referenced at a particular point, so I'm not sure what he's expecting rust to be able to do there.

Shaggar
Apr 26, 2006

Powerful Two-Hander posted:

tried this but its way of generating the change scripts is to try and connect across prod/test and do a diff but we have zero environment control so at any one given time dev will have changes that probably shouldn't go live. plus I want to version those components separately so I can do a 'what's the history of the viewButts proc" and see who hosed it up. also iirc it does the "table alter by drop and recreate" thing which makes me nervous.

the db project should keep things like the viewButts proc as individual script files so you can version them like that. it also keeps history in some form so it will handle things like renames properly (in most cases). the real problem is like you said with stuff in dev that isn't ready for prod. there aren't any tools that fix this since its a process problem.

There are kind of 3 ways to handle it:
1) When you do a diff for prod with the db project diff tool it will give you a list of objects from which you can filter things for the release
2) Divide your schema into separate databases to limit the impact of parallel development
3) Create a new Dev environment and only publish current releases from dev to test so test to prod is always current changes.


They all suck for various reasons but there really isn't a good solution.

Arcsech
Aug 5, 2008

white sauce posted:

Hi, I'm a fng learning Java and I need help with my first set of Homework for my programming class :downs: It's very basic stuff but I have 0 experience with this and the assignment is pretty difficult.

I'll be willing to paypal or venmo you $ for the time spent helping me. Feel free to send a PM if it interests you.

Also, feel free to own me for being such an idiot and posting this in this thread. Thanks!

dont fuckin do this

this reads as "i want to pay someone to do my homework for me". nobody wants to do your homework for you. :justpost: your question and someone will probably help you

if you really think you need a ton of help find a real tutor

e: but seriously just post your question, even if it's really dumb it's almost certain someone will at least post a link to point you in the right direction

Bloody
Mar 3, 2013

white sauce posted:

Hi, I'm a fng learning Java and I need help with my first set of Homework for my programming class :downs: It's very basic stuff but I have 0 experience with this and the assignment is pretty difficult.

I'll be willing to paypal or venmo you $ for the time spent helping me. Feel free to send a PM if it interests you.

Also, feel free to own me for being such an idiot and posting this in this thread. Thanks!

i will do your homework for you. my rate is $300/hr, minimum 2 hours

The MUMPSorceress
Jan 6, 2012


^SHTPSTS

Gary’s Answer

Arcsech posted:

dont fuckin do this

this reads as "i want to pay someone to do my homework for me". nobody wants to do your homework for you. :justpost: your question and someone will probably help you

if you really think you need a ton of help find a real tutor

e: but seriously just post your question, even if it's really dumb it's almost certain someone will at least post a link to point you in the right direction

seriously yospos took me from an underpaid overworked tech writer to a six figgie engineer and I didn't have to pay anyone. we're all dorks and it's fun to help someone tease out an idea.

Slurps Mad Rips
Jan 25, 2009

There's No Guarantee

DONT THREAD ON ME posted:

does jblow have fans within the game industry or is his club made out of gamers and aspiring game devs?

from my experience its mostly gamers and people looking to break into the industry. on more than one occasion, quite a few people have described him as "someone who has never suffered a day in his entire life", while others say he acts like someone who "wears a hat that says I'm special on it"

Symbolic Butt
Mar 22, 2009

(_!_)
Buglord

crazypenguin posted:

blowhard is mad because Rust got lots of attention, and he feels he deserves all that attention because he feels he's the hottest poo poo ever.

in the end that's really the gist of it

it clearly hit a nerve. a rust programmer talking about game programming, oh my, time to be a condescending rear end in a top hat to this woman, nitpicking a strawman argument.

The_Franz
Aug 8, 2003

Symbolic Butt posted:

in the end that's really the gist of it

it clearly hit a nerve. a rust programmer talking about game programming, oh my, time to be a condescending rear end in a top hat to this woman, nitpicking a strawman argument.

he's probably mad that rust gets more attention than his home-rolled, no-formal-spec bideo-james language

The_Franz
Aug 8, 2003

Slurps Mad Rips posted:

from my experience its mostly gamers and people looking to break into the industry. on more than one occasion, quite a few people have described him as "someone who has never suffered a day in his entire life", while others say he acts like someone who "wears a hat that says I'm special on it"

tbf, from what i've heard about the guy he was basically a broke loser just scraping by until braid became a minor hit

like so many other dorks though, he seems to have taken the concept of having money as justification that he is always right

abraham linksys
Sep 6, 2010

:darksouls:
the one good thing jonathan blow did was the puzzle game grant for underrepresented developers (https://www.gamesindustry.biz/articles/2018-03-20-the-witness-studio-offering-usd20-000-grants-to-underrepresented-developers), and i have a friend who was on the committee that decided who gave out grants who said it only worked because everyone yelled at blow constantly to the point that he just withdrew from the decision making process entirely. not that he admitted that he was ever wrong, mind you; he just withdrew because he didn't like getting yelled at. the dude is lovely as hell.

anyways, am i right in assuming that this is the rust ecs talk he was mad about? i'm gonna watch it, i guess. i've been writing a unity-style component framework for games in typescript, but a proper ecs system that separates state and logic seems closer to what i actually wanted. i used to try to build functional games but never knew how the gently caress to structure them; while an ecs system like this isn't really "functional" it's closer to the ideal i wanted when i was doing that, i think.

i guess with the coming of webassembly i guess i could start looking into actually writing games in rust, but i do like typescript quite a bit. dunno if rust bridges to stuff like canvas or pixijs are up and running yet. converting the stuff i've been working on to ecs would probably be a nightmare but it might be interesting to build out a little ecs implementation in typescript or something

abraham linksys fucked around with this message at 22:20 on Sep 14, 2018

white sauce
Apr 28, 2012

by R. Guyovich

Arcsech posted:

dont fuckin do this

this reads as "i want to pay someone to do my homework for me". nobody wants to do your homework for you. :justpost: your question and someone will probably help you

if you really think you need a ton of help find a real tutor

e: but seriously just post your question, even if it's really dumb it's almost certain someone will at least post a link to point you in the right direction

I'm working through the problems by myself already, I just kinda needed some guidance understanding some of the basics (like boolean operators). I've never really coded before and the teacher threw us a difficult first set of problems, so I thought I would need help from someone that already knows his poo poo.

The main issue is that it's a huge loving class and the teacher and the TA's all have their own poo poo going and 1 on 1 time is limited, so I need to seek outside sources of help. But yea, it's doable, it'd just be faster if I had someone to tell me "oh that problem is Big O notation question"

MrMoo
Sep 14, 2000

Ha the gently caress, slightly irate developer overwrites last version of his package in NPM with a message saying "stop using this". Subsequently the software disappears from the Internets.

https://www.reddit.com/r/node/comments/91kgte/uws_has_been_deprecated/

I've been trying to get this into production this week as well, dang. It's a rather fast WebSocket library for NodeJS, like 100% faster than the other option available.

MrMoo fucked around with this message at 23:35 on Sep 14, 2018

CRIP EATIN BREAD
Jun 24, 2002

Hey stop worrying bout my acting bitch, and worry about your WACK ass music. In the mean time... Eat a hot bowl of Dicks! Ice T



Soiled Meat
that guy owns.

Janitor Prime
Jan 22, 2004

PC LOAD LETTER

What da fuck does that mean

Fun Shoe

Shaggar posted:

the db project should keep things like the viewButts proc as individual script files so you can version them like that. it also keeps history in some form so it will handle things like renames properly (in most cases). the real problem is like you said with stuff in dev that isn't ready for prod. there aren't any tools that fix this since its a process problem.

There are kind of 3 ways to handle it:
1) When you do a diff for prod with the db project diff tool it will give you a list of objects from which you can filter things for the release
2) Divide your schema into separate databases to limit the impact of parallel development
3) Create a new Dev environment and only publish current releases from dev to test so test to prod is always current changes.


They all suck for various reasons but there really isn't a good solution.

I keep telling you Shaggar to double down on tools like liquibase which can take all your changes from dev to prod in a reproducible manner. Versioning of the sprocs and tables is handled by the tool and lets you push changes form dev->test->prod along side with your application.

MrMoo
Sep 14, 2000

CRIP EATIN BREAD posted:

that guy owns.

He has a nice grading repo that really winds some folk up,

Shaggar
Apr 26, 2006

Janitor Prime posted:

I keep telling you Shaggar to double down on tools like liquibase which can take all your changes from dev to prod in a reproducible manner. Versioning of the sprocs and tables is handled by the tool and lets you push changes form dev->test->prod along side with your application.

that's not the problem. the problem is there are objects for multiple releases in the dev or test database at the same time and the tool cant differentiate between what objects belong with one release and which ones belong with another.

so lets say I edited proc a for my release and a coworker edited proc b for his and while they have no effect on each other, if I were to point the tool at the db and compare it with a previous diff or with the next environment both procs would be included. But I only want proc A to be included because proc b development isn't finished or is otherwise part of a separate release that's not ready to migrate.

The tool cant decide which procs should go so a human has to tell it.

Janitor Prime
Jan 22, 2004

PC LOAD LETTER

What da fuck does that mean

Fun Shoe
That's not an issue with Liquibase because it doesn't model changes based on diffs between environments. In your example, each dev would have their respective changes to the sprocs in the changelog file. When feature A is complete you commit and merge your branch back into master which then gets applied to all the environments in the pipeline, following your normal release process. When feature B is done, it gets committed and pushed upstream at that point and there is none of the poo poo you talked about involved.

Shaggar
Apr 26, 2006
that relies on the developer manually keeping track of their objects as in option 1. it works but its not great.

Powerful Two-Hander
Mar 9, 2004

Mods please change my name to "Tooter Skeleton" TIA.


hmmm I'm getting a strong feeling that


Shaggar posted:

They all suck for various reasons but there really isn't a good solution

idk maybe I'll look at liquibase again. Its the table/index/constraint bit that's most annoying because everything else can just be a drop/create each time. Well I guess indexes can as well but you get my point.

prisoner of waffles
May 8, 2007

Ah! well a-day! what evil looks
Had I from old and young!
Instead of the cross, the fishmech
About my neck was hung.

Powerful Two-Hander posted:

I'm looking at moving our godawful database script management into something a bit better I.e. That actually manages the individual artefacts instead of being a massive pile of incremental change scripts that may or may not have been built on the right version and I've figured I can pretty easily manage procs views and functions just as scripts and pull out anything that's changed in a branch via a Git diff BUT wtf do I do with tables?


i mean, my first thought is just have a single script that creates the table as of a point in time and then adds incremental changes via sequential Alter statements and then I thought "well I want this to be rerunnable" so I added checks vs sys.information_schema to see if an individual table /column/constraint existed before each statement and now I'm thinking this is madness.

some team at work are using liquibase but that just seems to do the exact same thing except via its own definition language and with an extra executable in the way that you have to run to generate your actual scripts. also no possible way am I gonna do a "copy rows to a shadow table, drop and recreate and copy back" that's just asking for trouble.

I still haven't used it but it sounds like sqitch exists for this purpose:

quote:

Sqitch is a database change management application. What makes it different from your typical migration-style approaches? A few things:

No opinions
Sqitch is not integrated with any framework, ORM, or platform. Rather, it is a standalone change management system with no opinions about your database engine, application framework, or development environment.

Native scripting
Changes are implemented as scripts native to your selected database engine. Writing a PostgreSQL application? Write SQL scripts for psql. Writing a MySQL-backed app? Write SQL scripts for mysql.

Dependency resolution
Database changes may declare dependencies on other changes—even on changes from other Sqitch projects. This ensures proper order of execution, even when you’ve committed changes to your VCS out-of-order.

No numbering
Change deployment is managed by maintaining a plan file. As such, there is no need to number your changes, although you can if you want. Sqitch doesn’t much care how you name your changes.

Iterative development
Up until you tag and release your application, you can modify your change deployment scripts as often as you like. They’re not locked in just because they’ve been committed to your VCS. This allows you to take an iterative approach to developing your database schema. Or, better, you can do test-driven database development.

https://sqitch.org

DELETE CASCADE
Oct 25, 2017

i haven't washed my penis since i jerked it to a phtotograph of george w. bush in 2003

prisoner of waffles posted:

I still haven't used it but it sounds like sqitch exists for this purpose:


https://sqitch.org

this seems unnecessarily complicated compared to flyway imo, maybe it is solving additional problems that i'm not seeing?

prisoner of waffles
May 8, 2007

Ah! well a-day! what evil looks
Had I from old and young!
Instead of the cross, the fishmech
About my neck was hung.

DELETE CASCADE posted:

this seems unnecessarily complicated compared to flyway imo, maybe it is solving additional problems that i'm not seeing?

idk, what parts seem unnecessary to you? then work backwards from those to "when would anyone ever need such a thing?" and answer your own question

Fiedler
Jun 29, 2002

I, for one, welcome our new mouse overlords.

Shaggar posted:

that's not the problem. the problem is there are objects for multiple releases in the dev or test database at the same time and the tool cant differentiate between what objects belong with one release and which ones belong with another.

so lets say I edited proc a for my release and a coworker edited proc b for his and while they have no effect on each other, if I were to point the tool at the db and compare it with a previous diff or with the next environment both procs would be included. But I only want proc A to be included because proc b development isn't finished or is otherwise part of a separate release that's not ready to migrate.

The tool cant decide which procs should go so a human has to tell it.
preparing update scripts by schema comparison of dev/test/prod is not the intended use of database projects.

the standard workflow should be:
- author your database definition in visual studio as t-sql source files
- ci produces a versioned build artifact -- the dacpac file
- use sqlpackage, webdeploy, or powershell+dac api to publish the dacpac to a target database. the publishing tool will figure out how to make the target database look like the database you defined in visual studio.

Fiedler
Jun 29, 2002

I, for one, welcome our new mouse overlords.

Powerful Two-Hander posted:

also iirc it does the "table alter by drop and recreate" thing which makes me nervous.

no, ssdt tries to avoid drop and recreate where possible. the biggest issue is that sql server doesn't allow inserting a new column into the middle of an existing table. it only allows appending columns to the end of a table. ssdt considers column order to be part of a table's definition, so it has to drop and recreate if you insert a new column in the middle of a table. or you can just tell it to ignore column order and it'll append new columns to the end regardless.

Shaggar
Apr 26, 2006

Fiedler posted:

preparing update scripts by schema comparison of dev/test/prod is not the intended use of database projects.

the standard workflow should be:
- author your database definition in visual studio as t-sql source files
- ci produces a versioned build artifact -- the dacpac file
- use sqlpackage, webdeploy, or powershell+dac api to publish the dacpac to a target database. the publishing tool will figure out how to make the target database look like the database you defined in visual studio.

yeah that's not how anyone uses this stuff tho. I talked to someone on the vs team ages ago and it blew their mind that anyone would ever develop a database used by multiple applications or that someone might do development work in SSMS instead of VS since until like a year or two ago VS db dev tools were unusable.

they way it should work is sql server has its own versioning system for every object and then you can build a deployment script by selecting combinations of objects and versions. like you set a tag on an object and it can be grouped together into a release.

idk. versioning w/ sql is a pita

Fiedler
Jun 29, 2002

I, for one, welcome our new mouse overlords.
the vs db dev tools, excluding ssis and ssas tools, have basically not changed at all in the last eighteen months?

regardless, yeah, people use the tools the wrong way all of the goddamn time, and the ssdt tools enable them by having great support for updating projects from databases.

CRIP EATIN BREAD
Jun 24, 2002

Hey stop worrying bout my acting bitch, and worry about your WACK ass music. In the mean time... Eat a hot bowl of Dicks! Ice T



Soiled Meat
we use liquibase and we just make sure our migrations run on snapshots of daily/staging/production perfectly fine and never have to worry about it

Qtotonibudinibudet
Nov 7, 2011



Omich poluyobok, skazhi ty narkoman? ya prosto tozhe gde to tam zhivu, mogli by vmeste uyobyvat' narkotiki

mystes posted:

Capitalist/proletariat

i am v late to this discussion but wholeheartedly suggest that we use chatlanin/patsak: https://www.youtube.com/watch?v=Pe66FcnlYpA

base leader election on the color of the database's pants

Powerful Two-Hander
Mar 9, 2004

Mods please change my name to "Tooter Skeleton" TIA.


Fiedler posted:

no, ssdt tries to avoid drop and recreate where possible. the biggest issue is that sql server doesn't allow inserting a new column into the middle of an existing table. it only allows appending columns to the end of a table. ssdt considers column order to be part of a table's definition, so it has to drop and recreate if you insert a new column in the middle of a table. or you can just tell it to ignore column order and it'll append new columns to the end regardless.

ah OK that's pretty standard behaviour I think. some genius did that to a production database a few years ago because they wanted to "clean up" the column order and wiped the table lol


ill have a look at sqitch and the others. also there is no CI process or automated deployment tool because we suuuck

edit: I have to install perl to use it on windows? loving gross

AggressivelyStupid
Jan 9, 2012

white sauce posted:

I'm working through the problems by myself already, I just kinda needed some guidance understanding some of the basics (like boolean operators). I've never really coded before and the teacher threw us a difficult first set of problems, so I thought I would need help from someone that already knows his poo poo.

The main issue is that it's a huge loving class and the teacher and the TA's all have their own poo poo going and 1 on 1 time is limited, so I need to seek outside sources of help. But yea, it's doable, it'd just be faster if I had someone to tell me "oh that problem is Big O notation question"

Dropping Big O in babies first programming class sounds cruel and unusual


:justpost:

CRIP EATIN BREAD
Jun 24, 2002

Hey stop worrying bout my acting bitch, and worry about your WACK ass music. In the mean time... Eat a hot bowl of Dicks! Ice T



Soiled Meat

AggressivelyStupid posted:

Dropping Big O in babies first programming class sounds cruel and unusual


:justpost:

i'm pretty sure that at my university, before i could take anything related to programming, i had to take an algorithms course that was nothing but reading/write pseudocoe and time complexity analysis.

Adbot
ADBOT LOVES YOU

Blinkz0rz
May 27, 2001

MY CONTEMPT FOR MY OWN EMPLOYEES IS ONLY MATCHED BY MY LOVE FOR TOM BRADY'S SWEATY MAGA BALLS

CRIP EATIN BREAD posted:

i'm pretty sure that at my university, before i could take anything related to programming, i had to take an algorithms course that was nothing but reading/write pseudocoe and time complexity analysis.

this is like people admitting that their parents beat them with switches when they were kids but then swear that it was just discipline

being abused by a cruel education isn't your fault

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