Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - "tree(s)"
-
Private chat pops up. (- separator for new message)
Hello
- (1 min)
Can you help me?
- (2-3 mins)
Please it's urgeeeent!!!!!
- (1 min)
Come on you're online, I see the green dot.
- (5 mins)
Ok then I won't be able to work. Will write this down in the ticket.
- (15 mins) - new private chat pops up
Hi, we need to talk.
- (3 mins)
Regarding ticket XY, why aren't you responding? It's really urgent.
- (5 mins)
Please notify me as soon as you're available, it's really important!!!
- (20 mins, new private chat opens)
Hi mate, I think the devs are up to mischief. Said you're not reachable, I'll try to poke them with the stun gun.
- (60 mins, message in the official and only endorsed support room)
@all We broke staging, <Me> never responds and <Team mate who tried to use the stun gun> wasn't helpful either.
We really need this now!!!!!!!
- 30 mins later... la me:
@all I was in a meeting with the stakeholders as we had an priority meeting... What was so important that you not only ignored the rule of not messaging privately and even ignored <team mate>s instructions?
- 5 mins later, answer
no need to be so unfriendly.... We broke staging as we had to test stuff out for next week's sprint review [something which is still 3 days away or sth like that]. We really need to take a look in the team at it and for that we must have staging working now!!!!
- (La me)
If you need it urgent now, you didn't plan ahead. And if you didn't plan ahead, you have to wait for others. The sprint review and all other important days are planned ahead for a reason.
- (Silence)
- (20 mins later, private chat, team lead)
Will you finally fix staging now?
- La me
If it could wait 3 hours now and you / your team ignored all netiquette, it can wait till next day, too. We had this discussion more than once, I don't think I need to explain this further.
(Silence)
All in all, the joys of communication...
Now the fun stuff is when this not only happens with 1 team, but many teams....
Having 35 - 40 private chats and chat window looking like a christmas tree thx to the immeasurable amount of notifications and colors... Yay...
Did I mention that I hate the ego some programmers have -.10 -
I'll use this topic to segue into a related (lonely) story befitting my mood these past weeks.
This is entire story going to sound egotistical, especially this next part, but it's really not. (At least I don't think so?)
As I'm almost entirely self-taught, having another dev giving me good advice would have been nice. I've only known / worked with a few people who were better devs than I, and rarely ever received good advice from them.
One of those better devs was my first computer science teacher. Looking back, he was pretty average, but he held us to high standards and gave good advice. The two that really stuck with me were: 1) "save every time you've done something you don't want to redo," and 2) "printf is your best debugging friend; add it everywhere there's something you want to watch." Probably the best and most helpful advice I've ever received 😊
I've seen other people here posting advice like "never hardcode" or "modularity keeps your code clean" -- I had to discover these pretty simple concepts entirely on my own. School (and later college) were filled with terrible teachers and worse students, and so were almost entirely useless for learning anything new.
The only decent dev I knew had brilliant ideas (genetic algorithms, sandboxing, ...) before they were widely used, but could rarely implement them well because he was generally an idiot. (Idiot sevant, I think? Definitely the idiot part.) I couldn't stand him. Completely bypassing a ridiculously long story, I helped him on a project to build his own OS from scratch; we made very impressive progress, even to this day. Custom bootloader, hardware interfacing, memory management, (semi) sandboxed processes, gui, example programs ...; we were in highschool. I'm still surprised and impressed with what we accomplished.
But besides him, almost every other dev I met was mediocre. Even outside of school, I went so many years without having another competent dev to work with. I went through various jobs helping other dev(s) on their projects (or rewriting them), learning new languages/frameworks almost every time: php, pascal, perl, zend, js, vb, rails, node, .... I learned new concepts occasionally (which was wonderful) but overall it was just tedious and never paid well because I was too young to be taken seriously (and female, further exacerbating it). On the bright side, it didn't dwindle my love for coding, and I usually spent my evenings playing with projects of my own.
The second dev (and one one of the best I've ever met) went by Novo. His approach to a game engine reminded me of General Relativity: Everything was modular, had a rich inheritance tree, and could receive user input at any point along said tree. A user could attach their view/control to any object. (Computer control methods could be attached in this way as well.) UI would obviously change depending on how the user could interact and the number of objects; admins could view/monitor any of these. Almost every object / class of object could talk to almost everything else. It was beautiful. I learned so much from his designs. (Honestly, I don't remember the code at all, and that saddens me.) There were other things, too, but that one amazed me the most.
I havent met anyone like him ever again.
Anyway, I don't know if I can really answer this week's question. I definitely received some good advice while initially learning, but past that it's all been through discovering things on my own.
It's been lonely. ☹2 -
I have a Windows machine sitting behind the TV, hooked to two controllers, set up as basically a console for the big TV. It doesn't get a lot of use, and mostly just churns out folding@home work units lately. It's connected by ethernet via a wired connection, and it has a local static IP for the sake of simplicity.
In January, Windows Update started throwing a nonspecific error and failing. After a couple weeks I decided to look up the error, and all the recommendations I found online said to make sure several critical services were running. I did, but it appeared to make no difference.
Yesterday, I finally engaged MS support. Priyank remoted into my machine and attempted all the steps I had already tried. I just let him go, so he could get through his checklist and get to the resolution steps. Well, his checklist began and ended with those steps, and he started rather insistently telling me that I had to reinstall, and that he had to do it for me. I told him no thank you, "I know how to reinstall windows, and I'll do it when I'm ready."
In his investigation though, I did notice that he opened MS Edge and tried to load Bing to search for something. But Edge had no connection. No pages would load. I didn't take any special notice of it at the time though, because of the argument I was having with him about reinstalling. And it was no great loss to me that Edge wasn't working, because that was literally the first time it'd ever been launched on that computer.
We got off the phone and I gave him top marks in the CS survey that was sent, as it appeared there was nothing he could do. It wasn't until a couple hours later that I remembered the connectivity problem. I went back and checked again. Edge couldn't load anything. Firefox, the ping command, Steam, Vivaldi, parsec and RDP all worked fine. The Windows Store couldn't connect either. That was when it occurred to me that its was likely that Windows Update was just unable to reach the internet.
As I have no problem whatsoever with MS services being unable to call home, I began trying to set up an on-demand proxy for use when I want to update, and I noticed that when I fill out the proxy details in Internet Options, or in Windows 10's more windows10-ish UI for a system proxy, the "save" button didn't respond to clicks. So I looked that problem up, and saw that it depends on a service called WinHttpAutoProxySvc, which I found itself depends on something called IP Helper, which led me to the root cause of all my issues: IP Helper now depends on the DHCP Client service, which I have explicitly disabled on non-wifi Windows installs since the '90s.
Just to see, I re-enabled DHCP Client, and boom! Everything came back on. Edge, the MS Store, and Windows Update all worked. So I updated, went through a couple reboots-- because that's the name of the game with windows update --and had a fully updated machine.
It occurred to me then that this is probably how MS sends all its spy data too, and since the things I actually use work just fine, I disabled DHCP Client again. I figure that's easier than navigating an intentionally annoying menu tree of privacy options that changes and resets with every major update.
But holy shit, microsoft! How can you hinge the entire system's OS connectivity on something that not everybody uses?
6 -
I'm a contractor at a product company and today I had the pleasure of working with some jQuery.
A function needed to be called before another function, hard work right?
So I moved the call to the function 3 rows higher, checked it in, set the task as ready for test and started to look for other tasks.
Within a couple of minutes I get a direct message from another dev, let's call him Steve.
Steve wanted me to set the task to ready for code review instead of test, so I did just that and tried to move on.
Some minute or two later Steve contacts me again:
"It would be great if you'd move the comment so it'd be over the call to the function"
Well, I'm not one of those who likes comments... If you need a comment, it's probably not good/readable code. In some cases sure, it might be a complex block coming up.
Sorry, lost my train of thought.
I answered Steve : "Are you sure, I could just remove it instead?"
(for readability S will be Steve and M will be me)
S: Well, it's always good to have comments
M: In this case I think it will be alright.
S: But it's nice to see what the function is doing.
M: I'll do it if you really want me to.
S: It's better to have the comment than to not have it and needing it.
M: Okay then
The name of the function : LoadOrganizationTree()
And this is the comment :
//Load organization tree6 -
On the first day of Christmas
My true love gave to me
A drunk who drove into a tree
On the second day of Christmas
My true love gave to me
Two shattered skulls
And a drunk who drove into a tree....
Twelve beaten children
Eleven drive-by shootings
Ten frozen homeless
Nine amputations
Eight burn victims
Seven strangled shoppers
Six random knifings
Five suicides
Four beaten wives
Three O.D.'s
Two shattered skulls
And a drunk who drove into a tree6 -
Share your look-busy scripts
I'm talking about some script, or command(s) which output impressive garbage to the screen. For instance, `tree / | od` or `ping google.ca | xxd` might be enough to dazzle an executive, but to really ensnare a fellow dev, you need to get a bit more complex.
So let's see those scripts! From stupid simple, to application-level complex, I wanna see 'em all! :D11 -
I love software. Seriously, I love it. /s
Transmission is given a bad torrent (which, given that it's a torrent service, you'd expect it handles quite robustly) and completely fucks up. Like, really badly. It doesn't respond to RPC anymore, systemd has to resort to sending it a SIGKILL to get it off the process tree, and the web interface.. yeah. Nothing.
It doesn't log by default, so fine I'll add that to the systemd unit and restart it with debugging options enabled.
# systemctl daemon-reload && systemctl daemon-reexec
Turns out that /var/log/transmission.log can't be written to by my Transmission user. Well shit. Change that to /home/condor/transmission.log.
# systemctl daemon-reload && systemctl daemon-reexec
# systemctl restart transmission-daemon
*blood starts to reach its boiling point*
Still logs in the wrong fucking location. Systemd, I told you to log over there. I did everything I could to make you steaming pile of shit reload that fucking config. What's the fucking problem!?
*about 15 minutes of fighting systemd*
Finally! It spits out a log in the right location! Thank you Transmission and systemd for finally doing your fucking jobs. So a bad torrent it is, hmm...
*removes torrent from .config/transmission/torrents*
Transmission: *still fucking shits itself on that ostensibly removed torrent*
That's it. BEGONE!!!
Oh and don't get me started on the fact that apparently a service needs some 400MB of memory. Channeling your inner Chrome Transmission?5 -
Google and TikTok sitting is a tree, K-I-S-S-I-N-G
First comes love, then comes marriage
Then comes a baby in a baby carriage
---
I see this every time I need to manually update some apps...
19 -
First off i'll try and describe my game in as little words as possible, think your typical survival game but crossed-over with a town management/village management game and in VR.
So this is a little old since i posted it on twitter a couple weeks back but I made some progress on a game i'm working on.
https://twitter.com/Arcticfoenix/...
Sorry that it's a link to twitter for those that do not like twitter, i can give you a run-down of what it shows and ill figure out a way of linking the videos somehow.
I decided that I should show some progress on the game I started working on before I joined the company that I'm with now, my only issue is the amount of free time I don't have to work on it.
First video shows resource gathering, we (as in me and my brother) wanted to go with more realistic tree chopping something you would see in the forest or stranded deep, you chop a tree at the base and it will fall down, where you then can chop it into logs and planks.
The next video shows the blueprint system which is how you will craft your items like the forge, crafting table, etc. By picking the blueprint from within your book (which doubles for your UI/Menu/way to exit the game) and placing it on the ground. You then take a hammer and hit it in place to confirm the placement - I definitely want to be able to have the object be rotatable and such which i'll do in the future.
Last one shows tool dismantling system, where you can take tools/weapon apart when put on a crafting table, the idea behind this is so you can change up parts of your tool/weapon brcause individual bita will degrade and visually show wear, axe head will show chips that will get bigger and eventually break, which will leave you with just a handle. You can also jusy generally improve one piece of your weapon/tool.
Last thing that I left out as an actual video was that the map generation is all procedurally generated, all thanks to Sebastian Lague's tutorial, I managed to finish it and will definitely be exploring ways to create awesome maps to play on.
Everything is mostly from when I worked on this game in december with a few things that I did recently when I get the chance I will do lots of overhauling and work to making a demo version of the game! -
1/2 dev and a fair warning: do not go into the comments.
You're going anyway? Good.
I began trying to figure out how to use stable diffusion out of boredom. Couldn't do shit at first, but after messing around for a few days I'm starting to get the hang of it.
Writing long prompts gets tiresome, though. Think I can build myself a tool to help with this. Nothing fancy. A local database to hold trees of tokens, associate each tree to an ID, like say <class 'path'> or some such. Essentially, you use this to save a description of any size.
The rest is textual substitution, which is trivial in devil-speak. Off the top of my head:
my $RE=qr{\< (?<class> [^\s]+) \s+ ' (?<path>) [^'] '\>}x;
And then? match |> fetch(validate) |> replace, recurse. Say:
while ($in =~ $RE) {
my $tree=db->fetch $+{class},$+{path};
$in=~ s[$RE][$tree];
};
Is that it? As far the substitution goes, then yeah, more or less. We have to check that a tree's definition does not recurse for this to work though, but I would do that __before__ dumping the tree to disk, not after.
There is most likely an upper limit to how much abstraction can be achieved this way, one can only get so specific before the algorithm starts tripping balls I reckon, the point here is just reaching that limit sooner.
So pasting lists of tokens, in a nutshell. Not a novel idea. I'd just be making it easier for myself. I'd rather reference things by name, and I'd rather not define what a name means more than once. So if I've already detailed what a Nazgul is, for instance, then I'd like to reuse it. Copy, paste, good times.
Do promise to slay me in combat should you ever catch me using the term "prompt engineering" unironically, what a stupid fucking joke.
Anyway, the other half, so !dev and I repeat the warning, just out of courtesy. I don't think it needs to be here, as this is all fairly mild imagery, but just in case.
I felt disappointed that a cursed image would scare me when I've seen far worse shit. So I began experimenting, seeing if I could replicate the result. No luck yet, but I think we're getting somewhere.
Our mission is clearly the bronwning of pants, that much is clear. But how do we come to understand fear? I don't know. "Scaring" seems fairly subjective.
But I fear what I know to be real,
And I believe my own two eyes.
11 -
So I promised a post after work last night, discussing the new factorization technique.
As before, I use a method called decon() that takes any number, like 697 for example, and first breaks it down into the respective digits and magnitudes.
697 becomes -> 600, 90, and 7.
It then factors *those* to give a decomposition matrix that looks something like the following when printed out:
offset: 3, exp: [[Decimal('2'), Decimal('3')], [Decimal('3'), Decimal('1')], [Decimal('5'), Decimal('2')]]
offset: 2, exp: [[Decimal('2'), Decimal('1')], [Decimal('3'), Decimal('2')], [Decimal('5'), Decimal('1')]]
offset: 1, exp: [[Decimal('7'), Decimal('1')]]
Each entry is a pair of numbers representing a prime base and an exponent.
Now the idea was that, in theory, at each magnitude of a product, we could actually search through the *range* of the product of these exponents.
So for offset three (600) here, we're looking at
2^3 * 3 ^ 1 * 5 ^ 2.
But actually we're searching
2^3 * 3 ^ 1 * 5 ^ 2.
2^3 * 3 ^ 1 * 5 ^ 1
2^3 * 3 ^ 1 * 5 ^ 0
2^3 * 3 ^ 0 * 5 ^ 2.
2^3 * 3 ^ 1 * 5 ^ 1
etc..
On the basis that whatever it generates may be the digits of another magnitude in one of our target product's factors.
And the first optimization or filter we can apply is to notice that assuming our factors pq=n,
and where p <= q, it will always be more efficient to search for the digits of p (because its under n^0.5 or the square root), than the larger factor q.
So by implication we can filter out any product of this exponent search that is greater than the square root of n.
Writing this code was a bit of a headache because I had to deal with potentially very large lists of bases and exponents, so I couldn't just use loops within loops.
Instead I resorted to writing a three state state machine that 'counted down' across these exponents, and it just works.
And now, in practice this doesn't immediately give us anything useful. And I had hoped this would at least give us *upperbounds* to start our search from, for any particular digit of a product's factors at a given magnitude. So the 12 digit (or pick a magnitude out of a hat) of an example product might give us an upperbound on the 2's exponent for that same digit in our lowest factor q of n.
It didn't work out that way. Sometimes there would be 'inversions', where the exponent of a factor on a magnitude of n, would be *lower* than the exponent of that factor on the same digit of q.
But when I started tearing into examples and generating test data I started to see certain patterns emerge, and immediately I found a way to not just pin down these inversions, but get *tight* bounds on the 2's exponents in the corresponding digit for our product's factor itself. It was like the complications I initially saw actually became a means to *tighten* the bounds.
For example, for one particular semiprime n=pq, this was some of the data:
n - offset: 6, exp: [[Decimal('2'), Decimal('5')], [Decimal('5'), Decimal('5')]]
q - offset: 6, exp: [[Decimal('2'), Decimal('6')], [Decimal('3'), Decimal('1')], [Decimal('5'), Decimal('5')]]
It's almost like the base 3 exponent in [n:7] gives away the presence of 3^1 in [q:6], even
though theres no subsequent presence of 3^n in [n:6] itself.
And I found this rule held each time I tested it.
Other rules, not so much, and other rules still would fail in the presence of yet other rules, almost like a giant switchboard.
I immediately realized the implications: rules had precedence, acted predictable when in isolated instances, and changed in specific instances in combination with other rules.
This was ripe for a decision tree generated through random search.
Another product n=pq, with mroe data
q(4)
offset: 4, exp: [[Decimal('2'), Decimal('4')], [Decimal('5'), Decimal('3')]]
n(4)
offset: 4, exp: [[Decimal('2'), Decimal('3')], [Decimal('3'), Decimal('2')], [Decimal('5'), Decimal('3')]]
Suggesting that a nontrivial base 3 exponent (**2 rather than **1) suggests the exponent on the 2 in the relevant
digit of [n], is one less than the same base 2 digital exponent at the same digit on [q]
And so it was clear from the get go that this approach held promise.
From there I discovered a bunch more rules and made some observations.
The bulk of the patterns, regardless of how large the product grows, should be present in the smaller bases (some bound of primes, say the first dozen), because the bulk of exponents for the factorization of any magnitude of a number, overwhelming lean heavily in the lower prime bases.
It was if the entire vulnerability was hiding in plain sight for four+ years, and we'd been approaching factorization all wrong from the beginning, by trying to factor a number, and all its digits at all its magnitudes, all at once, when like addition or multiplication, factorization could be done piecemeal if we knew the patterns to look for.7 -
OK here's lang, very easy.
set lines, (split "\n", orc fname). ; ORC -- open, write, close
map lines, strip.
grep lines, filter blanks.
map lines, # lineproc:
- on line match, qr~^# \s* (?<name> [\a]+) \((?<type> [\a+])\) \s*:\s*~x.
· · * have type or default type.
· · * set dst, name or new type name.
- on line match, qr~^\- (?<name> .*)~x.
· · * dst->cur eq dst->[name] eq new list name.
- on line match qr~^\* (?<item> .*)~x.
· · * push dst->cur, item.
- else
· · * cat dst->cur, line or throw fuk.
I'm skipping over a couple edge cases (no dst/cur, I be throw fuk for brevity) but you get the gist of it maybe.
Anyway what's this for? Lists, like so:
```rol
# dst (type):
- attr:
· · * hi im item one in list
· · · still item one lmao.
· · * hi im item two in list.
```
That gives `dst { attr: [item_1, item_2] }`. There's another bit I'm omitting to make this recursive so as to allow for nested dicts, but nevermind that it's a tree you get it right.
So what it's lame. Yes. Let's smoke some crack now I can add preprocessor in subclass:
```
# dst (cracktype):
$:%fn args;>
(text)
$:/fn;>
```
That will call `fn text,args` to process text __before__ lineproc, `fn` is just callback from callback table in Nebraska maybe.
$:peso;> syntax is just so text can contain funstuff OK.
I like <fn args /> better, and $:this;> is just stuff no one ever writes so it's safe to use.
Want to reference object in text too, what? `{$obj [fn args]}` anywhere in text to make call, now can do database lookup so naming be important. Have import mechanism to fetch collections, can't bother showing.
Anyway what's the point I dunno, just copying and pasting from local library to pack entire app in single html file. Why? Can't remember; doesn't matter.
Also can convert to json but I prefer my own version of it.
Called jargon.
Same thing but no quotes just because so `obj {attr:[(value), (value)]}`.
Now eat baguettes.
Have a nice wallop.1 -
[ADVICE NEEDED]
I'm just going to graduate, and I got a job as S/W engineer(trainee) in a small (500 odd employees) company, which uses salesforce, SAP and sharepoint technologies! They are most probably gonna put me in salesforce or SAP. Is it good enough for `me`(read my background), I'm kind of confused, should I go for higher studies?
BACKGROUND:
very average student, but swift at learning technologies, never really got interested in competitive (otherwise I had a real good chance in top companies), I kind of have good IT skills - proficient in python and angularJS, but recently I have got into ML and done some projects!
Okay here's the part, I know it's important for a fresher to be good in data structures, I'm indeed good in parts which I have used! I haven't used AVL tree in any of my projects so I don't know, nor I have ever used bitwise ops!
I think I want to get into roots of ML (some people say I'm fickle but IDC), I think if I take the above job I may loose my interests or may not have time, Please advice.
(sorry for the tags but I need advice from people for all these fields)10 -
I know it a strange thing to ask but I need help with English grammar ( I am not a English native)
I am doing an assignment on context free grammar program.
What the program need to do it "Produce a grammar tree based on the rule"
For example a sentence "Jame sat.", It will need to produce a grammar tree like this.
S
_____|___
NP VP
| |
N V
| |
holmes sat
The only thing I need to do it give a grammar rule to the program like this
S -> NP VP
NP -> N | Det N
VP -> V | NP
What the above rule said is that the sentence is composed of Noun Phrase and Verb Phrase and Noun Phrase is either is a Noun or a determiner and Noun.
Now here is the meat of the question.
I am having trouble parsing a grammar tree for this sentence "She never said a word until we were at the door here"
I have provided my grammar rule below. I think I forget to add some grammar rule or some of my grammar rule are incorrect. I am not a native English speaker so I am having trouble on it.
The search engine have fail me (I have look up various grammar tree) so I am asking for help on devrant. Grammar nazi are warmly welcome :)
S -> NP VP | S Conj VP | S Conj S
NP -> N | Det NP | N PP | Adj N | Det Adj N | Det N
PP | Det NOM | Det N PP
VP -> V | V NP | V NP PP | V PP | V NP PP Adv
VP -> Adv V NP | VP PP | VP AVP | V PP PP | V
ADJP
PP -> P NP
AVP -> Adv | Adv Adj | Adv AVP
NOM -> Adj Adj N | Adj N | Adj NP
ADJP -> Adj | Adj PP
**I am not sure about these two clause below**
VP -> V | Adv
NP -> Adj Adj N22
