|
Thread Rules 1. This is not a "do my homework for me" thread. If you have specific questions, ask, but don't post an assignment or homework problem and expect an exact solution. 2. No recruiting for your cockamamie projects (you won't replace facebook with 3 dudes you found on the internet and $20) 3. If you can't articulate why a language is bad, don't start slinging shit about it. Just remember that nothing is worse than making CSS IE6 compatible. 4. Use [code] tags to format code blocks. |
does dup2 follow fork?
if I dup2 to change stdin to say, a file for input and then fork
does the child process use the file for input or is it pointing to the original stdin? it points to the file for input, right?
so like, since I am making a shell program where each command forks a child process,
so if a user wants input redirection on the first command, and inputs multiple commands at once (say with &&), I need to fork, then dup in the child process, and then fork the next command from the parent not the child? that will work? or do I need to set stdin back to file descriptor 1?
basically I can't remember what is and isn't shared among all processes
is it that the open file TABLE is shared among all processes, but each process has it's own open file descriptor?
|
In C#, how can one make a line full of dashes in the console?
I'm trying to get the dashes lines to be as wide as the numbers being printed without simply hardcoding a number of dashes:
http://i.imgur.com/JQ2NyPo.jpg
+ Show Spoiler + static void Main(string[] args) { printEvenSquaresCubesLoop(); printEvenSquaresCubesRescursive(0, 20); }
static void printEvenSquaresCubesLoop() { int numSum = 0; int squareSum = 0; int cubeSum = 0;
Console.WriteLine("{0, 10} {1, 10} {2, 10}" , "number" , "square" , "cube"); Console.WriteLine("--------------------------------");
for (int i = 0; i <= 20; i = i + 2) { Console.WriteLine("{0, 10} {1, 10} {2, 10}" , i , i * i , i * i * i); numSum += i; squareSum += i * i; cubeSum += i * i * i; }
Console.WriteLine("--------------------------------"); Console.WriteLine("{0, 10} {1, 10} {2, 10}" , numSum , squareSum , cubeSum); }
static int printEvenSquaresCubesRescursive(int input, int max) { if(input >= max) { Console.WriteLine("{0, 10} {1, 10} {2, 10}" , input , input * input , input * input * input); return input; } else { Console.WriteLine("{0, 10} {1, 10} {2, 10}" , input , input * input , input * input * input); return input * printEvenSquaresCubesRescursive(input + 2, 20); }
} }
edit: updated code cause the recursive solution is also not going to be formatted so nicely :D
|
On April 23 2017 08:28 Thaniri wrote: In C#, how can one make a line full of dashes in the console?
I'm trying to get the dashes lines to be as wide as the numbers being printed without simply hardcoding a number of dashes:
int len = 20; string str = ''; char pad = '-';
Console.WriteLine(str.PadLeft(len, pad)); // might as well be PadRight...
|
I thought of that solution, but a problem occurs if instead of 10 iterations, I have to do 100 or 1000 iterations. The dashed line won't match up with the new wider columns.
edit: An idea I had was similar to MySQL select last_insert_id(). I wanted to get the last thing sent to standard output, grab the length of that, and then print out the dashes as required. This wouldn't work unfortunately though since I'm being asked to have a dashed line before and after the columns of numbers.
|
Does the dashed line have to match the longest line from all lines or from a single set?
You can simply calculate the padding dynamically (instead of directly writing to the output, save it to a string and pass it's length to the padding).
// outside of loop int longest = 0; String p = '';
// inside loop String s = String.Format("{0, 10} {1, 10} {2, 10}", input, input * input, input * input * input); longest = s.Length > longest ? s.Length : longest;
Console.WriteLine(s);
// outside of loop Console.WriteLine(p.PadLeft(longest, '-');
|
My question was dumb 
The reason my question is stupid in the first place is that the right aligned formatting is clever enough to figure out that I'm right aligning integers and allocates enough spaces to fit the maximum integer size. In this case it is perfectly valid to hard code the length of my dashed lines because no matter how small or big my inputs are the width of the columns is the same.
Oh well, that's what I get for trying to be smart.
edit: Thanks for your demo. It does teach me about String formatting in c# :D
|
Updated the demo
|
new string(pad, len)
should work too
|
My brain is fried. I need help with SQL again.
Select from single table. Relevant columns: position, status.
Select row with lowest position where all rows with lower position have certain status.
|
Maybe you're not clear, but wouldn't
SELECT id, MIN(position) FROM table WHERE status != <certain status> GROUP BY status;
do it?
E: actually, because you may have more statuses than just the "certain status" and others, this won't give you just one row.
So I guess:
SELECT TOP 1 id, position FROM table WHERE status != <certain status> ORDER BY position ASC;
|
Russian Federation4235 Posts
On April 25 2017 23:34 Manit0u wrote: My brain is fried. I need help with SQL again.
Select from single table. Relevant columns: position, status.
Select row with lowest position where all rows with lower position have certain status. Are you sure it's not `highest`?
|
On April 26 2017 01:17 BluzMan wrote:Show nested quote +On April 25 2017 23:34 Manit0u wrote: My brain is fried. I need help with SQL again.
Select from single table. Relevant columns: position, status.
Select row with lowest position where all rows with lower position have certain status. Are you sure it's not `highest`?
Nono, it's for queueing stuff. To simplify it let's assume that you have some jobs that need to be performed in order. I need to grab the next job in order, assuming that all previous jobs have the "done" status. I shouldn't get any results if even one job is "in progress".
Does this make any sense?
Example:
Job 1: position 1, status "done" Job 2: position 2, status "done" Job 3: position 3, status "ready" Job 4: position 4, status "ready"
Need to get Job 3.
Example 3:
Example:
Job 1: position 1, status "done" Job 2: position 2, status "in progress" Job 3: position 3, status "ready" Job 4: position 4, status "ready"
Should get empty result.
|
On April 26 2017 02:15 Manit0u wrote:Nono, it's for queueing stuff. To simplify it let's assume that you have some jobs that need to be performed in order. I need to grab the next job in order, assuming that all previous jobs have the "done" status. I shouldn't get any results if even one job is "in progress".
Does this make any sense?
Example:
Job 1: position 1, status "done" Job 2: position 2, status "done" Job 3: position 3, status "ready" Job 4: position 4, status "ready"
Need to get Job 3.
Example 3:
Example:
Job 1: position 1, status "done" Job 2: position 2, status "in progress" Job 3: position 3, status "ready" Job 4: position 4, status "ready"
Should get empty result. Here's my suggestion, assuming jobs are always processed in order:
select * from ( select top 1 job from table where status != "done" order by job asc ) a where status != 'in progress'
If for some reason there's a possibility jobs are processed out of order, you would have to factor that in this way:select * from ( select top 1 job from table where status != "done" order by job asc ) a where (select count(job) from table where status = 'In Progress') = 0
|
Job 8 might be in progress while job 7 is ready. Your query would select job 7 but ignore the fact that job 8 is in progress.
|
Hyrule18977 Posts
that won't work though, that will just pull the first ready job even if there's one in progress
sniped :<
|
Yes, just edited. If your choice of which job to run is granted only by means of this query, than it works just fine. But if you have other processes that might decide to start a job, the second one is best.
|
Hyrule18977 Posts
MySQL/Maria doesn't have top, you'd have to do
SELECT * FROM (SELECT * FROM `jobs` WHERE `status` != "done" ORDER BY `id` ASC LIMIT 1) a WHERE (SELECT COUNT(`id`) FROM `jobs` WHERE `status` = 'in progress') = 0
|
Attempt:+ Show Spoiler +This is not correct syntax:
select job from (select job from table group by status where status != "in progress" order by status desc) limit 1;
lets say the way ordering works is (alphabetically): done = 0 in progress = 1 ready = 2
This should select the first ready job but does not give you an empty result set if an in progress is found.
Unless you have bandwidth problems, why don't you use a programming language to find out if the returned data set contains "in progress"
select job, position, status from table where job = whatever;
Then in the application layer you can iterate over your result set and make a decision as needed.
|
In MySQL,
select * from jobs where status = 'ready' and not exists (select * from jobs where status = 'in progress') order by position limit 1;
|
Damn I forgot about the 'not exists' clause.
|
|
|
|