The Official Status Thread


  • BINNED

    @Jarry said:

    I'm curious about what are you doing that needs ReflectionMethod

    @RaceProUK said:

    Dependency injection?

    Yup. Using it as a way for the module to override a method in the current class. continue; is there because it's looping over the available modules and looking for overrides. This one is obviously a bust so...

    @ben_lubar said:

    Can't you just do $module->model->$methodName($arg1, $arg2);?

    No, because I can't be sure that the module implements that method.



  • wouldn't it be easier with a model class and some __call magic?


  • BINNED

    That is a part of my __call magic.

    The point is that I have multiple modules hooking up to multiple other modules / core classes... Simple inheritance doesn't cut it. And since modules can hook into other modules (without being dependent on them), and I can't know for sure which modules will be present on a specific installation...



  • that seems like a fun thing to code.

    it just needs traits added, everything it's better with traits.


  • BINNED

    @Jarry said:

    it just needs traits added, everything it's better with traits.

    This is php. It barely does basic inheritance. Don't push it.



  • you'd be susrprised.
    this works fine:

    trait Trackeable
    {
        //snip
    }
    
    trait TrackModification
    {
        use Trackeable;
        //snip
    }
    
    trait TrackDelete
    {
        use Trackeable;
        //snip
    }
    
    trait TrackAll
    {
        use TrackDelete, TrackModification {
            TrackDelete::bootTrackeable insteadof TrackModification;
            TrackDelete::attachLoggedUser insteadof TrackModification;
        }
    }
    

    (i need that supertrait to workaround some laravel idiocy)


  • Grade A Premium Asshole

    @abarker said:

    Status: Working with a team in India on a project, and we have update calls twice each week. I make an effort to arrive in the office half an hour before the call to help make sure I am awake and prepared for the meeting. Showed up this morning to an email indicating that the call had been shifted an hour earlier, which means that I had already missed it.

    The real kicker? The email about the time change was sent 8 minutes before the new meeting time.

    What time is the call scheduled for?


  • FoxDev

    @Jarry said:

    Track[b]e[/b]able

    My quills are twitching…!



  • it's some spanglish thing. an english verb conjugated in spanish. because belgium you that's why


  • BINNED

    Holy crap, they actually implemented that? When?

    As of PHP 5.4.0, PHP implements a method of code reuse called Traits.

    Ah, that would explain it. I obviously need to keep up on php features 😣. Last time I really dug into them was sometime during 5.3.x.

    I also keep forgetting php keeps adding major features in minor versions.



  • Status: Tweet I just received (no one-box because it'll get deleted when this guy is inevitably banned for spamming):

    @Blakeyrat Susu Glucogen BISA MEMUTIHKAN & MENGENCANGKAN Kulit loohhh. Aman Tanpa Effek samping CP liat BIO

    So, uh. Now you know.

    EDIT: from Google Translate:

    CAN Glucogen Milk Skin whitening & TIGHTENING loohhh . Safe Without side effect is CP clay BIO

    Ah. Normal spam. Not crazy poltergeist text.


  • ♿ (Parody)

    @abarker said:

    Showed up this morning to an email indicating that the call had been shifted an hour earlier, which means that I had already missed it.

    Next week you need to send a last minute email delaying the meeting by an hour or so.


  • ♿ (Parody)

    @RaceProUK said:

    And it means Top Gear's been cancelled.

    I've never watched Top Gear, but this seems like a surefire way to kill it:

    Top Gear, being so far behind the curve, would only be able to catch up if it undertook a radical rethink of its value system. I suggest an eco-feminist approach. In the first place, they need to incorporate the obvious concerns of the entire industry, to produce cars that get you places without needless waste. It’s not wholemeal and boring.


  • FoxDev

    Someone who has clearly missed the whole point of (new) Top Gear. It's never been about the cars; it's been about being a petrolhead!

    Though I do agree with this bit:

    The coolest car in the world right now is the BMW i8, a part electric, part petrol dreamscape of silent majesty.



  • ah, the multiple joys of PHP
    5.3 --> 5.4 is a world of distance.
    recommended read: http://www.phptherightway.com/
    (that page should be blank to be coherent with its name 😝 )


  • Grade A Premium Asshole

    @boomzilla said:

    I've never watched Top Gear, but this seems like a surefire way to kill it:

    If they really have shitcanned Jeremy Clarkson, I think they should make her vision of Top Gear. It will either completely kill the show in a humane way because no one would watch that shit, or it would make them realize that there is no show without him and make people realize they should not take nutty bitches like that seriously.



  • @Polygeekery said:

    What time is the call scheduled for?

    Was 8 am in AZ/8:30 pm in India. Now 7:00 am / 7:30 pm in India

    INB4 timezones are TRWTF


  • BINNED

    On the to-read list, thanks.

    Traits might be a bit of an overkill for most of the things I'm currently overriding (it's usually only one or two methods, and they tend to be pretty specialized), but might come in handy later. call_user_func_array() combined with that bit of reflection is serving me well so far.


  • Grade A Premium Asshole

    @abarker said:

    Was 8 am in AZ/8:30 pm in India. Now 7:00 am / 7:30 pm in India

    So they wanted to bump it to a time when you would not even be in the office? Was anyone in the office at 7am?



  • @Polygeekery said:

    So they wanted to bump it to a time when you would not even be in the office?

    Yes.

    @Polygeekery said:

    Was anyone in the office at 7am?

    No.

    And I just found out: They work 4:30 pm to 12:30 am India time.



  • Apologies. For some reason I had Belgium and Dwarf Fortress associated in my mind. :caughtwithmypantsdown:



  • I still see some strange stuff... Let's say there are N posts in a topic, I've scrolled to the bottom, and the greenbar thingy says N / N. I submit my post, the greenbar changes to N+1 / N+1. Two seconds later, it changes to N+1 / N+2. Two seconds after that, it changes back to N+1 / N+1.

    EDIT: This doesn't happen if I don't scroll to the bottom first.



  • I've noticed something like this, if I post from the bottom of a thread with N posts (like what I am doing now):

    • Counter is N/N.
    • Submit post
    • Counter jumps to N-1/N+2
    • Counter jumps to N-1/N+1

    Edit: hard to demonstrate without video capture, which I CBA...


  • FoxDev

    Status: Testing teh bug…

    Update: Confirm repro



  • Our Discourse come, your error be done,
    On desktop as it is on mobile,
    Give us this day our daily bug.
    So mote it be,
    Amen.



  • What are you talking about I couldn't even get past the first paragraph.


  • FoxDev

    @tar said:

    Our Discourse come, your error be done,
    On desktop as it is on mobile,
    Give us this day our daily bug.
    So mote it be,
    Amen.

    That deserves more than a like:
    http://new3.fjcdn.com/comments/Nice+one+_6bdc20f101f0743dd2d7ad584292081b.jpg



  • @Mikael_Svahnberg said:

    Apologies. For some reason I had ■■■■■■■ and Dwarf Fortress

    Why apologize? At the very least, they're neighbors.


  • BINNED

    @abarker said:

    At the very least, they're neighbors.

    I'll check any pit in the vicinity for dwarves


  • BINNED

    Status: went to read my email. found this:

    I swear I read it as UTC first.

    I blame all the DST discussion over here seeping through into the rest of my life! I spend way too much time here...


  • FoxDev

    status: caught up on reading.... that was annoying beaing able to read but not getting credit for reading. :-P



  • @Onyx said:

    I blame all the DST discussion over here seeping through into the rest of my life! I spend way too much time here...

    The YKYSTMTOWTDWTFW thread is :arrows.mp3:



  • Not sure about Belgium, but in Dwarf Fortress, the legal drinking age is 1 and all the babies are breastfed by their mothers (who drink exclusively alcohol) so they probably have a pretty low alcohol blood content as well.



  • @ben_lubar said:

    but in Dwarf Fortress, the legal drinking age is 1 and all the babies are breastfed by their mothers (who drink exclusively alcohol) so they probably have a pretty low alcohol blood content as well.

    No wonder their growth is so stunted.



  • Status: sent an email


  • BINNED

    The... script was not running in screen? It was in a regular ssh session all along?

    Well... WTDWTF is TRWTF today. Rejoice.



  • Well, I don't know for sure. I haven't been to my computer with the ssh key on it yet today, so I can't check .bash_history to see if they ran screen or not.



  • @anonymous234 said:

    I look at the time. 1821:00. Oh dear it's that late already?
    ..
    I look at the time again. 1801:37. Fuck.
    FTFM. More times than I can count.


  • FoxDev

    Status: Had some fun with Chrome dev tools and paint.net.... but now that @kuro has spilled the beans on what i'm doing and @ben_lubar also figured it out it's not so much fun anymore.



  • github.com/BenLubar/specialize.BenchmarkHeapInit1M
    github.com/BenLubar/specialize.benchmarkHeapInit
    (*testing.B).ResetTimer
    runtime.ReadMemStats
    runtime.semacquire
    runtime.getg
    runtime.throw
    runtime.getg
    ...
    runtime.startpanic
    runtime.systemstack
    runtime.dopanic
    runtime.getcallerpc
    runtime.getcallersp
    runtime.getg
    ...
    runtime.systemstack
    ...
    runtime.cansemacquire
    runtime.atomicload
    runtime.nop
    runtime.cas
    runtime.acquireSudog
    runtime.acquirem
    runtime.getg
    ...
    runtime.lock
    runtime.getg
    ...
    runtime.throw
    ...
    runtime.key32
    runtime.xchg
    runtime.key32
    ...
    runtime.cas
    ...
    runtime.procyield
    runtime.key32
    ...
    runtime.xchg
    ...
    runtime.key32
    ...
    runtime.cas
    ...
    runtime.osyield
    runtime.key32
    ...
    runtime.futexsleep
    runtime.futex
    (*runtime.timespec).set_sec
    (*runtime.timespec).set_nsec
    runtime.futex
    ...
    runtime.timediv
    (*runtime.timespec).set_sec
    ...
    runtime.unlock
    runtime.key32
    ...
    runtime.xchg
    ...
    runtime.throw
    ...
    runtime.key32
    ...
    runtime.futexwakeup
    runtime.futex
    ...
    runtime.systemstack
    ...
    runtime.getg
    ...
    runtime.throw
    ...
    runtime.throw
    ...
    runtime.releasem
    runtime.getg
    ...
    runtime.semroot
    runtime.cputicks
    runtime.lock
    ...
    runtime.xadd
    runtime.cansemacquire
    ...
    runtime.xadd
    ...
    runtime.unlock
    ...
    (*runtime.semaRoot).queue
    runtime.getg
    ...
    runtime.goparkunlock
    runtime.gopark
    runtime.acquirem
    ...
    runtime.readgstatus
    runtime.atomicload
    ...
    runtime.throw
    ...
    runtime.releasem
    ...
    runtime.mcall
    runtime.cansemacquire
    ...
    runtime.blockevent
    runtime.atomicload64
    runtime.nop
    ...
    runtime.getg
    ...
    runtime.fastrand1
    runtime.callers
    runtime.getcallersp
    ...
    runtime.getcallerpc
    ...
    runtime.systemstack
    ...
    runtime.lock
    ...
    runtime.stkbucket
    runtime.sysAlloc
    runtime.mmap
    runtime.xadd64
    runtime.exit
    runtime.exit
    ...
    runtime.throw
    ...
    (*runtime.bucket).stk
    runtime.add
    runtime.eqslice
    runtime.newBucket
    runtime.persistentalloc
    runtime.throw
    ...
    runtime.throw
    ...
    runtime.throw
    ...
    runtime.sysAlloc
    ...
    runtime.lock
    ...
    runtime.round
    runtime.sysAlloc
    ...
    runtime.add
    ...
    runtime.unlock
    ...
    runtime.unlock
    ...
    runtime.throw
    ...
    runtime.xadd64
    ...
    runtime.xadd64
    ...
    runtime.throw
    ...
    (*runtime.bucket).stk
    ...
    (*runtime.bucket).bp
    runtime.throw
    ...
    runtime.add
    ...
    (*runtime.bucket).bp
    ...
    runtime.unlock
    ...
    runtime.gcallers
    runtime.gentraceback
    runtime.throw
    ...
    runtime.getg
    ...
    runtime.throw
    ...
    runtime.gotraceback
    runtime.getg
    ...
    runtime.findfunc
    runtime.add
    ...
    runtime.throw
    ...
    runtime.throw
    ...
    runtime.funcspdelta
    runtime.pcvalue
    runtime.step
    runtime.readvarint
    runtime.readvarint
    ...
    runtime.funcname
    runtime.cfuncname
    runtime.gostringnocopy
    runtime.findnull
    runtime.casuintptr
    runtime.step
    ...
    runtime.throw
    ...
    runtime.topofstack
    runtime.throw
    ...
    runtime.findfunc
    ...
    runtime.funcname
    ...
    runtime.throw
    ...
    runtime.setArgInfo
    runtime.funcname
    ...
    runtime.funcname
    ...
    runtime.throw
    ...
    runtime.noescape
    runtime.showframe
    runtime.getg
    ...
    runtime.gotraceback
    ...
    runtime.funcname
    ...
    runtime.hasprefix
    runtime.contains
    runtime.index
    runtime.hasprefix
    ...
    runtime.isExportedRuntime
    runtime.funcname
    ...
    runtime.funcline
    runtime.funcline1
    runtime.pcvalue
    ...
    runtime.pcvalue
    ...
    runtime.gostringnocopy
    ...
    runtime.findfunc
    ...
    runtime.funcspdelta
    ...
    runtime.throw
    ...
    runtime.adjustframe
    runtime.funcname
    ...
    runtime.pcdatavalue
    runtime.add
    ...
    runtime.pcvalue
    ...
    runtime.funcdata
    runtime.add
    ...
    runtime.add
    ...
    runtime.add
    ...
    runtime.funcname
    ...
    runtime.throw
    ...
    runtime.funcname
    ...
    runtime.throw
    ...
    runtime.stackmapdata
    runtime.throw
    ...
    runtime.add
    ...
    runtime.adjustpointers
    runtime.gobv
    runtime.add
    ...
    runtime.ptrbits
    runtime.add
    ...
    runtime.ptrbits
    ...
    runtime.add
    ...
    runtime.add
    ...
    runtime.throw
    ...
    runtime.getg
    ...
    runtime.funcname
    ...
    runtime.add
    ...
    runtime.throw
    ...
    runtime.funcname
    ...
    runtime.add
    ...
    runtime.throw
    ...
    runtime.adjustpointer
    runtime.add
    ...
    runtime.funcdata
    ...
    runtime.funcname
    ...
    runtime.throw
    ...
    runtime.funcname
    ...
    runtime.throw
    ...
    runtime.stackmapdata
    ...
    runtime.adjustpointers
    ...
    runtime.scanstack$1
    runtime.scanframeworker
    runtime.funcname
    ...
    runtime.pcdatavalue
    ...
    runtime.funcdata
    ...
    runtime.funcname
    ...
    runtime.throw
    ...
    runtime.funcname
    ...
    runtime.throw
    ...
    runtime.stackmapdata
    ...
    runtime.scanblock
    runtime.scanobject
    runtime.heapBitsForObject
    (*runtime.mspan).base
    runtime.printlock
    runtime.getg
    ...
    runtime.lock
    ...
    runtime.printunlock
    runtime.getg
    ...
    runtime.unlock
    ...
    runtime.throw
    ...
    runtime.heapBitsForAddr
    runtime.throw
    ...
    runtime.throw
    ...
    runtime.add
    ...
    (runtime.heapBits).typeBits
    (runtime.heapBits).next
    runtime.subtractb
    runtime.add
    ...
    runtime.throw
    ...
    runtime.checkwbshadow
    runtime.shadowptr
    runtime.inheap
    runtime.throw
    ...
    runtime.istrackedptr
    runtime.inheap
    ...
    runtime.heapBitsForObject
    ...
    runtime.greyobject
    runtime.throw
    ...
    (runtime.heapBits).isMarked
    (*runtime.gcWorkProducer).put
    runtime.noescape
    ...
    (runtime.wbufptr).ptr
    runtime.getpartialorempty
    runtime.getg
    ...
    runtime.getg
    ...
    runtime.xchguintptr
    runtime.lfstackpop
    runtime.atomicload64
    ...
    runtime.lfstackUnpack
    runtime.atomicload64
    ...
    runtime.cas64
    runtime.putfull
    (*runtime.workbuf).checknonempty
    runtime.throw
    ...
    (*runtime.workbuf).logput
    runtime.throw
    ...
    runtime.lfstackpush
    runtime.lfstackPack
    runtime.lfstackUnpack
    ...
    runtime.throw
    ...
    runtime.atomicload64
    ...
    runtime.cas64
    ...
    (*runtime.workbuf).logget
    runtime.throw
    ...
    runtime.getempty
    runtime.lfstackpop
    ...
    (*runtime.workbuf).checkempty
    runtime.throw
    ...
    runtime.persistentalloc
    ...
    (*runtime.workbuf).logget
    ...
    runtime.wbufptrOf
    runtime.putfull
    ...
    (runtime.heapBits).isMarked
    ...
    runtime.printlock
    ...
    (runtime.heapBits).isCheckmarked
    (runtime.heapBits).typeBits
    ...
    runtime.throw
    ...
    (runtime.heapBits).setCheckmarked
    (runtime.heapBits).typeBits
    ...
    runtime.atomicand8
    runtime.lock
    ...
    runtime.unlock
    ...
    runtime.atomicor8
    (runtime.heapBits).isCheckmarked
    ...
    runtime.throw
    ...
    (runtime.heapBits).setMarked
    runtime.atomicor8
    ...
    (runtime.heapBits).typeBits
    ...
    runtime.inheap
    ...
    runtime.throw
    ...
    runtime.scanblock
    ...
    runtime.funcdata
    ...
    runtime.funcname
    ...
    runtime.throw
    ...
    runtime.funcname
    ...
    runtime.throw
    ...
    runtime.stackmapdata
    ...
    runtime.releaseSudog
    runtime.throw
    ...
    runtime.throw
    ...
    runtime.throw
    ...
    runtime.throw
    ...
    runtime.throw
    ...
    runtime.getg
    ...
    runtime.throw
    ...
    runtime.acquirem
    ...
    runtime.releasem
    ...
    runtime.lock
    ...
    runtime.unlock
    ...
    runtime.getg
    ...
    runtime.systemstack
    ...
    runtime.systemstack
    ...
    runtime.semrelease
    runtime.semroot
    ...
    runtime.xadd
    ...
    runtime.atomicload
    ...
    runtime.lock
    ...
    runtime.atomicload
    ...
    runtime.unlock
    ...
    runtime.unlock
    ...
    runtime.xadd
    ...
    (*runtime.semaRoot).dequeue
    runtime.cputicks
    ...
    runtime.goready
    runtime.systemstack
    ...
    runtime.systemstack
    ...
    time.Now
    time.now
    container/heap.Init
    (*github.com/BenLubar/specialize.IntSlice).Len
    (github.com/BenLubar/specialize.IntSlice).Len
    container/heap.down
    (*github.com/BenLubar/specialize.IntSlice).Less
    (github.com/BenLubar/specialize.IntSlice).Less
    (*github.com/BenLubar/specialize.IntSlice).Less
    ...
    (*github.com/BenLubar/specialize.IntSlice).Swap
    (github.com/BenLubar/specialize.IntSlice).Swap
    (*golang.org/x/tools/go/types.nodeQueue).Less
    (golang.org/x/tools/go/types.nodeQueue).Less
    (*golang.org/x/tools/go/types.object).order
    (*golang.org/x/tools/go/types.Var).order
    (*golang.org/x/tools/go/types.object).order
    ...
    (*golang.org/x/tools/go/types.Const).order
    (*golang.org/x/tools/go/types.object).order
    ...
    (*golang.org/x/tools/go/types.TypeName).order
    (*golang.org/x/tools/go/types.object).order
    ...
    (*golang.org/x/tools/go/types.Func).order
    (*golang.org/x/tools/go/types.object).order
    ...
    (*golang.org/x/tools/go/types.PkgName).order
    (*golang.org/x/tools/go/types.object).order
    ...
    (*golang.org/x/tools/go/types.object).order
    ...
    (*golang.org/x/tools/go/types.Var).order
    ...
    (*golang.org/x/tools/go/types.Const).order
    ...
    (*golang.org/x/tools/go/types.TypeName).order
    ...
    (*golang.org/x/tools/go/types.Func).order
    ...
    (*golang.org/x/tools/go/types.PkgName).order
    ...
    (*golang.org/x/tools/go/types.Nil).order
    (*golang.org/x/tools/go/types.object).order
    ...
    (*golang.org/x/tools/go/types.Nil).order
    ...
    (*golang.org/x/tools/go/types.Builtin).order
    (*golang.org/x/tools/go/types.object).order
    ...
    (*golang.org/x/tools/go/types.Builtin).order
    ...
    (*golang.org/x/tools/go/types.Label).order
    (*golang.org/x/tools/go/types.object).order
    ...
    (*golang.org/x/tools/go/types.Label).order
    ...
    (*golang.org/x/tools/go/types.nodeQueue).Less
    ...
    (*golang.org/x/tools/go/types.nodeQueue).Swap
    (golang.org/x/tools/go/types.nodeQueue).Swap
    (*golang.org/x/tools/go/types.nodeQueue).Len
    (golang.org/x/tools/go/types.nodeQueue).Len
    (*testing.B).ResetTimer
    ...
    container/heap.Init
    ...

    Why does my code analysis library think that uses reflection?


  • FoxDev

    Status: Purposefully wasted two hours in the city centre... and then totally chickened out of meeting new people. Which is why I wasted all that time 😢


  • FoxDev

    ........ Girl, I am disappoint. -_-


  • FoxDev

    You are disappoint? How do you think I feel? :P
    Especially as it'll be two months before I get another chance (the next meet clashes with the WEC at Silverstone)...


  • FoxDev

    well maybe that will be motivation to meet new people next time!

    😛
    :hug:



  • Status:

    func Analyze(f *ssa.Function, result *rta.Result) {
    	log.Println("analyzing:", f)
    	for _, b := range f.Blocks {
    		for _, i := range b.Instrs {
    			if m, ok := i.(*ssa.MakeInterface); ok {
    				for _, r := range *m.Referrers() {
    					if cc, ok := r.(interface {
    						Common() *ssa.CallCommon
    					}); ok {
    						c := cc.Common()
    						if cf := c.StaticCallee(); cf != nil {
    							for i, v := range c.Args {
    								if v == m && !UsesReflection(result.CallGraph.Nodes[cf], make(map[int]bool)) {
    									log.Printf("%v <- %v used by %v (arg %d)", m.Type(), m.X.Type(), r, i)
    								}
    							}
    						}
    					}
    				}
    			}
    		}
    	}
    }
    


  • What's your Big O on that bitch?



  • Well, I don't know, but the run time of the program is definitely dominated by the function that computes the *rta.Result, so it doesn't really matter.


  • FoxDev

    STATUS: CYBERPARTS ONLINE


  • Grade A Premium Asshole

    @RaceProUK said:

    Also this:

    Clarkson had used the word "slope" as an Asian man crossed a newly built bridge over the River Kwai in Thailand.

    The river was actually the River Kok.

    The deck of the bridge was sloped. Why? Because it was built by three feckless idiots!

    Now, I'm not saying Clarkson is always in the clear, 'cause he ain't, not by a long way. But the fact-checking in that article leaves a lot to be desired…

    For anyone unfamiliar with the joke that was referred to here, this is the clip in question:

    https://www.youtube.com/watch?v=D-OQR5zu_J4

    Not really racist, just a bit of double-entendre.


  • BINNED

    Status: The artifact is tainted with shadow. You must slay more of he shadow first.

    Oh, I am sorry, game! I am indeed not worthy for I have slain only 5569 supernatural things, all of them out for my blood. Stupid privileged game, tumblr will hear about this!


Log in to reply