3,286,393 events, 1,483,661 push events, 2,287,905 commit messages, 164,453,987 characters
Implemented sign-in split for new/existing users
This was extremely annoying to figure out. I am honestly writing this for my future self to remember what happened here. Guides highly recommend to use LiveData when getting data from the db. This is because it allows you to see your data update in real time and deals with some concurrency/threading stuff. You cannot do db operations on the main thread. This is why you see a bunch of weird databaseWriteExecutor calls in Repository classes. That allows db stuff to occur on a seperate thread. However, what I wanted to do was not working with that approach. I wanted to check the db to see if a user existed in it and then do different things based on the result. This doesnt work with our current framework.
So I had to bring in two new classes: Callable and Future. Cant say I completely understand what they do but they replace the databaseWriteExecutor stuff so I would assume they are using other threads and blocking the main thread until the data is ready. By doing this, I was finally able to implement the SQL query and successfully branch what the app does based on if a user is new or existing!
Rename index.php to anjim.php
<title> Hacked By THIS IS ALPIN</title> <meta name="description" content="Can you love me?">
<meta name="keyword" content="Do You ready tolose">
<script>alert("THIS IS ALPIN !!!");</script>
<script>alert("I love my life because my life is you !");</script>
Hacked By THIS IS ALPIN
=> I Always Love You in 3 Time Now, Tomorrow and Forever :) <=
Thanks to : ~ GH05T666 ~ Q.GH05T666 ~ D3V0L0P3R 37 ~ Razor ~ BL4CK-R05E ~ ./Kabur ~ D4nzX0 ~ Rizal01 ~ "Flo ~ SadBroder_kh4t3m ~ Babycode ~ Hanabi ~ THIS IS ALPIN ~ Grapelce ~ YuT4_Ra ~ TN SASORI ~ ~KISAME ~RZKY ~
Message:
<font size="5" color="red"style="border:1px solid; border-color:red;" width="80%"> Hargai Aku Selagi Ada ,Dan intinya Aku cinta kamu Muehehehe
GHOST EXPLOITER TEAM
© Copyleft 2020
Add files via upload
HR Analytics Project
Every year a lot of companies hire a number of employees. The companies invest time and money in training those employees, not just this but there are training programs within the companies for their existing employees as well. The aim of these programs is to increase the effectiveness of their employees. But where HR Analytics fit in this? and is it just about improving the performance of employees?
HR Analytics
Human resource analytics (HR analytics) is an area in the field of analytics that refers to applying analytic processes to the human resource department of an organization in the hope of improving employee performance and therefore getting a better return on investment. HR analytics does not just deal with gathering data on employee efficiency. Instead, it aims to provide insight into each process by gathering data and then using it to make relevant decisions about how to improve these processes.
Attrition in HR
Attrition in human resources refers to the gradual loss of employees over time. In general, relatively high attrition is problematic for companies. HR professionals often assume a leadership role in designing company compensation programs, work culture and motivation systems that help the organization retain top employees.
How does Attrition affect companies? and how does HR Analytics help in analyzing attrition? We will discuss the first question here and for the second question we will write the code and try to understand the process step by step.
Attrition affecting Companies
A major problem in high employee attrition is its cost to an organization. Job postings, hiring processes, paperwork and new hire training are some of the common expenses of losing employees and replacing them. Additionally, regular employee turnover prohibits your organization from increasing its collective knowledge base and experience over time. This is especially concerning if your business is customer facing, as customers often prefer to interact with familiar people. Errors and issues are more likely if you constantly have new workers.
Dataset
https://github.com/dsrscientist/IBM_HR_Attrition_Rate_Analytics
References
https://towardsdatascience.com/people-analytics-with-attrition-predictions-12adcce9573f
Revert "FUCK YOU, BALTIMORE"
This reverts commit 5f728d7ea736512f560fa8553245128bbe6f1d6f.
Created Text For URL [www.news24.com/SouthAfricanews24/southafrica/news/mom-17-and-boyfriend-arrested-after-2-year-old-girl-dies-from-rape-assault-20201125]
"2:30pm. Let me resume. I've slacked for far too long.
Though watching some anime and wasting the rest of the time just lurking the threads is fun on its own. After a while though I remember the torment and get the urge to resume. These wasteful activities cultivate the longing that lets me keep going.
I wish that one day these meaningless timewasters would become meaningful.
2:40am. Right now I am just thinking (and getting distracted with the Pathfinder Wiki on the side.)
I am thinking of doing some programming in Spiral, but I am not going to get anywhere until I implement that top level open. This is what I need to get those core operators into scope.
I really do not feel like working on this right now, but damn it, I am going to have to do it. It is annoying as I will have to extend several passes in order to get this functionality, but let me do it.
I actually have the local opens implemented, but not the global ones...
inl (+) z x =
open a
z + x
Yeah, this actually works. Well, this should not take more more than a few hours. let me just do it.
| RawModuleOpen of VSCRange * (VSCRange * VarString) * (VSCRange * SymbolString) list * on_succ: RawExpr
Here is the local one.
| TopOpen of VSCRange * (VSCRange * VarString) * (VSCRange * SymbolString) list
Let me add the global one. Now I need to make the parser for it. How does the local one work?
let module_open = module_open |>> fun (r,(name,acs)) on_succ -> RawModuleOpen(r,name,acs,on_succ)
It seems to be simple enough.
let top_open d = module_open |>> fun (r,(name,acs)) -> TopOpen(r,name,acs)
Let me add it to the list of parseable statements.
2:50pm. Now I have to fill in the missing cases.
| [{offset=i; statement=TopOpen(r,a,b)}] -> BundleOpen(add_offset i r, add_offset_hovar i a, add_offset_hovar_list i b)
It is really great how neatly I arranged everything. That makes going back and making the requisite changes a lot easier.
2:55pm. Done with TypecheckingUtils
. The next is infer
. I need to implement the top level case.
I should borrow from the local one.
| RawOpen(_,(a,b),l,on_succ) ->
match module_open top_env a b l with
| Ok x ->
let combine e m = Map.fold (fun s k _ -> Set.add k s) e m
cterm (Map.foldBack Map.add x.constraints constraints) (combine term x.term) (combine ty x.ty) on_succ
| Error e -> errors.Add(e)
This is the checking function for the real segments.
| RawOpen(r,a,b,c) ->
let f = function TyModule s -> s | _ -> failwith "Compiler error: Module open should always succeed in fill."
List.fold (fun s x -> (f s).[snd x]) top_env.term.[snd a] b |> f
|> Map.fold (fun s k _ -> Map.remove k s) rec_term
|> fun rec_term -> RawOpen(r,a,b,term rec_term c)
This one is in fill
. I do not need this one.
| RawOpen(_,(a,b),l,on_succ) ->
match module_open (loc_env top_env) a b l with
| Ok x ->
let combine e m = Map.foldBack Map.add m e
term {term = combine env.term x.term; ty = combine env.ty x.ty; constraints = combine env.constraints x.constraints} s on_succ
| Error e -> errors.Add(e)
This is the one I need.
let combine big small = Map.foldBack Map.add small big
term {term = combine env.term x.term; ty = combine env.ty x.ty; constraints = combine env.constraints x.constraints} s on_succ
This is the right way to name those arguments.
type FilledTop =
| FType of VSCRange * RString * HoVar list * RawTExpr
| FNominal of VSCRange * RString * HoVar list * RawTExpr
| FNominalRec of (VSCRange * RString * HoVar list * RawTExpr) list
| FInl of VSCRange * RString * RawExpr
| FRecInl of (VSCRange * RString * RawExpr) list
| FPrototype of VSCRange * RString * RString * TypeVar list * RawTExpr
| FInstance of VSCRange * RGlobalId * RGlobalId * RawExpr
I need to extend this as well.
| FOpen of VSCRange * RString * RString list
This should not be hard...
| BundleOpen(q,(r,a),b) ->
match module_open (loc_env top_env) r a b with
| Ok x -> psucc (fun () -> FOpen(q,(r,a),b)), {top_env_empty with term=x.term; ty=x.ty; constraints=x.constraints}
| Error er -> errors.Add(er); pfail, top_env_empty
I think this should suffice in infer
.
Now, there shoul...
3:15pm. Ah crap. I just realized what I did. If I implement it like this, then the open will act like an include. Everything in the module will be inserted into this one as if it belonged there.
3:20pm. There is no way around it. Top level opens are absolutely necessary. I am going to have to redesign how this whole thing works in order to fit them in...
top_env_additions : TopEnv
type 'a AdditionType =
| AOpen of 'a
| AInclude of 'a
open System.Collections.Generic
type InferResult = {
filled_top : FilledTop Hopac.Promise
top_env_additions : TopEnv AdditionType
offset : int
hovers : RString []
errors : RString list
}
Let me do it like this.
3:25pm. That takes care of infer
. I think the prepass should be next.
| FOpen(r,a,b) ->
failwith ""
Once more, let me see how locals are taken care of here.
| RawOpen (_,a,l,on_succ) ->
let a,b =
match top_env.term.[snd a], top_env.ty.[snd a] with
| EModule a, TRecord(_, b) ->
List.fold (fun (a,b) (_,x) ->
match Map.find x a, Map.find x b with
| EModule a, TRecord(_, b) -> a,b
| _ -> failwith "Compiler error: Module open's symbol index should have been validated."
) (a,b) l
| _ -> failwith "Compiler error: Module open should have been validated."
let env : Env = {
term = {|env.term with env = Map.foldBack Map.add a env.term.env|}
ty = {|env.ty with env = Map.foldBack Map.add b env.ty.env|}
}
term env on_succ
I should factor this out.
| RawOpen (_,a,l,on_succ) ->
let module_open a l =
let a,b =
match top_env.term.[snd a], top_env.ty.[snd a] with
| EModule a, TRecord(_, b) ->
List.fold (fun (a,b) (_,x) ->
match Map.find x a, Map.find x b with
| EModule a, TRecord(_, b) -> a,b
| _ -> failwith "Compiler error: Module open's symbol index should have been validated."
) (a,b) l
| _ -> failwith "Compiler error: Module open should have been validated."
{
term = {|env.term with env = Map.foldBack Map.add a env.term.env|}
ty = {|env.ty with env = Map.foldBack Map.add b env.ty.env|}
}
term (module_open a l) on_succ
Something like this. Now where should I put it?
type TopEnv = {
prototypes_next_tag : int
prototypes_instances : Map<GlobalId * GlobalId,E>
nominals_next_tag : int
nominals : Map<GlobalId,{|body : T; name : string|}>
term : Map<string,E>
ty : Map<string,T>
}
The prepass is simpler the the type inferencer. I do not have complicated package unification in it...
3:35pm. ...I am going to need it though. The way the prepass is implemented now can only work for modules.
But it does not matter. Thanks to the enlightened design work that I put in, getting from where I am now to the real deal won't be too hard.
For the time being let me implement the module open in the current incorrect style.
| FOpen(r,a,b) ->
let x = module_open top_env env a b
{top_env with term=x.term.env; ty=x.ty.env}
I put the module_open
at the top level.
{
term = {|env.term with env = Map.foldBack Map.add a env.term.env|}
ty = {|env.ty with env = Map.foldBack Map.add b env.ty.env|}
}
It really should not be adding things to the env itself. The way the typer works is right and this will need more work.
| b :: bs ->
let x = Infer.infer package_id module_id env (bundle_top b)
let _,_,env as s = b,x,Infer.union x.top_env_additions env
Cons(s,promise_thunk (fun () -> loop old_results env (i+1) bs))
Here is the first error as could be expected.
But forget this for a bit.
3:40pm. I am not sure whether I should be shoving everything into the top env here. Let me try it that way.
let top_env_additions = Stream.foldFromFun top_env_empty (fun a (b : InferResult) -> Infer.union a b.top_env_additions) r >>-* Infer.in_module name
Yeah, this is where I need to elaborate the opens and includes. Opens I should filter out, but includes can retain the same behavior.
let top_env_additions =
Stream.foldFromFun top_env_empty (fun a (b : InferResult) ->
match b.top_env_additions with
| AOpen adds -> a
| AInclude adds -> Infer.union a adds
) r >>-* Infer.in_module name
Yeah, this should do nicely.
3:50pm. Focus me. Are there any other spots I need to take care off. The prepass redesign will wait for when I get to it. There is no need to think about this now. It won't be hard.
Nope. This is the StreamServer.fs
.
Now I notice that OldServer.fs
is still hanging around. Let me delete it.
I should give the top level open
s a try now. Let me commit here since I did a fair bit."
finally managed to make special keys work in term-char-mode and not FUCK UP my c-w in insert mode in normal evil which drove me absolutely 100% crazy. thanks.
"3:55pm.
open a
inl (+) z x = z + x
inl A = 1 + 2
inl B = 1 + 2
inl C = 1 + 2
This works. Nice.
4pm. At this point, I can consider writing some libraries. There is a lot of stuff in tc.spi
that needs factoring.
How about I get to it?
I'll make a core
folder and put all the essentials there.
Oh, yeah, now that I think about did I not add the include flags in module signatures.
What happened to that? Did I even ever implement this?
I need to referesh my memory.
| File of VSCRange * RString * is_top_down : bool * is_include : bool
What happened to is_include
flag? I do not remember every having any considerations for it.
| FileHierarchy.File(r',(r,a),is_top_down,_) ->
try let x = FileInfo(Path.Combine(prefix,a + (if is_top_down then ".spi" else ".spir")))
let exists = x.Exists
if exists then
links.Add (r, "file:///" + x.FullName)
actions.Add (r, RenameFile {|filePath=x.FullName; target=null|})
actions.Add (r, DeleteFile {|range=r'; filePath=x.FullName|})
else
errors.Add (r, "File does not exist.")
actions.Add (r, CreateFile {|filePath=x.FullName|})
Some(File((r,x.FullName),a,exists))
with e -> errors.Add (r, e.Message); None
I completely ignore it here.
| FileHierarchy.File(r',(r,a),is_top_down,is_include) ->
// ...
Some(File((r,x.FullName),a,is_top_down,exists,is_include))
Let me change it to this.
type DiffableFileHierarchy =
| File of path: string * name: string * is_top_down : bool * is_include : bool * meta: MultiFileOutState option * ParserRes Promise * tc: TypecheckerStream option
| Directory of name: string * DiffableFileHierarchy list
Let me do this like so.
| File(path,name,is_include,None,results_parser,tc) ->
I am doing this wrong. If the module is to be included outright then it does not need a name.
type ValidatedFileHierarchy =
| File of path: RString * name: string option * exists: bool
I should have gone down this route.
Some(File((r,x.FullName),(if is_include then Some a else None),exists))
Brilliant.
| File(path,name,None,results_parser,tc) ->
let tc = match tc with Some tc -> tc | None -> typechecker package_id i.module_id i.top_env
let r,tc = tc.Run(results_parser)
changed_files <- Map.add path r changed_files
let top_env_additions =
let adds =
Stream.foldFromFun top_env_empty (fun a (b : InferResult) ->
match b.top_env_additions with
| AOpen _ -> a
| AInclude adds -> Infer.union a adds
) r
match name with
| Some name -> adds >>-* Infer.in_module name
| None -> Hopac.memo adds
let o = {module_id=i.module_id+1; top_env_additions=top_env_additions}
File(path,name,Some o,results_parser,Some tc),o
Now I can handle includes like this. Great.
4:25pm. I am thinking...
How am I going to auto-open core
? I am not sure.
Let me take a short break and then I'll try doing some actual programming in Spiral.
4:45pm. Let me resume.
I'll leave the issue of auto opening core aside for another day. What I should do here is finally do some programming in Spiral
4:50pm. Focus me. Only one hour of this left. Let me make good use of it.
inl (+) forall t {number}. (a : t) (b : t) : t = !!!!Add(a,b)
inl (-) forall t {number}. (a : t) (b : t) : t = !!!!Sub(a,b)
inl (*) forall t {number}. (a : t) (b : t) : t = !!!!Mult(a,b)
inl (**) forall t {number}. (a : t) (b : t) : t = !!!!Pow(a,b)
inl (/) forall t {number}. (a : t) (b : t) : t = !!!!Div(a,b)
inl (%) forall t {number}. (a : t) (b : t) : t = !!!!Mod(a,b)
inl (<=) forall t {number}. (a : t) (b : t) : bool = !!!!LTE(a,b)
inl (<) forall t {number}. (a : t) (b : t) : bool = !!!!LT(a,b)
inl (=) forall t {number}. (a : t) (b : t) : bool = !!!!EQ(a,b)
inl (<>) forall t {number}. (a : t) (b : t) : bool = !!!!NEQ(a,b)
inl (>) forall t {number}. (a : t) (b : t) : bool = !!!!GT(a,b)
inl (>=) forall t {number}. (a : t) (b : t) : bool = !!!!GTE(a,b)
inl (=) forall t. (a : t) (b : t) : bool = !!!!EQ(a,b)
inl (<>) forall t. (a : t) (b : t) : bool = !!!!NEQ(a,b)
inl (|>) a b = b a
inl (>>) a b x = b (a x)
inl (<|) a b = a b
inl (<<) a b x = a (b x)
inl dyn ~x = x
inl mut forall t. (x : t): mut t = !!!!LayoutToHeapMutable(x)
inl (~*) forall t. (x : mut t): t = !!!!LayoutIndex(x)
inl heap forall t. (x : t): heap t = !!!!LayoutToHeap(x)
inl (~!) forall t. (x : heap t): t = !!!!LayoutIndex(x)
I'll make just this the initial core. realcore
will come later. I just need to make sure I can order the things properly now.
4:55pm. Ah, whops, it is not that it is not getting included, it is that I switched the positions around. Let me fix that.
5:05pm.
inl y = list .nil ()
let t = list.cons_ (1, y)
Mhhh, I can't get let t = list (cons: 1, y)
to work. Is there some error in module application? How annoying.
| TyModule l ->
let args = ResizeArray()
let typevars = ResizeArray()
let rec f l x =
match visit_t x with
| TySymbol x ->
args.Add(x)
match Map.tryFind x l with
| Some (TyModule _) when is_in_left_apply = false -> errors.Add(r,ModuleMustBeImmediatelyApplied)
| Some a ->
let typevars',a = forall_subst_all a
typevars.AddRange(typevars')
unify r s a
| None -> errors.Add(r,ModuleIndexFailed x)
| TyPair(TySymbol x, b) ->
args.Add(x)
match Map.tryFind x l with
| Some (TyModule l) -> f l b
| Some a ->
let typevars',a = forall_subst_all a
typevars.AddRange(typevars')
unify r a (TyFun(b,s))
| None -> errors.Add(r,ModuleIndexFailed x)
| x -> errors.Add(r,ExpectedSymbolAsModuleKey x)
How strange.
I am going to have to simplify things if I want to figure this out.
Let me try again.
inl y = x: 1
No wait. It is telling me this is X: 1
.
Ah, actually that is how it is supposed to be printed. How complicated.
5:15pm.
inl R =
inl r = {x_=fun x => x}
r (.x_, (1 : i32))
I have the same problem in records. It is telling me it is expecting a symbol key. What is going on?
let rec apply_record r s l x =
let f = apply_record r s
match visit_t x with
| TySymbol x ->
match Map.tryFind x l with
| Some x -> unify r s x
| None -> errors.Add(r,RecordIndexFailed x)
| TyPair(TySymbol x, b) ->
match Map.tryFind x l with
| Some (TyRecord l) -> f l b
| Some a -> unify r a (TyFun(b,s))
| None -> errors.Add(r,RecordIndexFailed x)
| x ->
printfn "%A" x
errors.Add(r,ExpectedSymbolAsRecordKey x)
Ah, maybe the problem is that I am only visiting the outer part of the TyPair. Let me try printing it raw.
Server bound to: tcp://*:13805
TyPair
(TyMetavar ({ scope = 1
constraints = set []
kind = KindType }, { contents = Some (TySymbol "x_") }),
TyMetavar ({ scope = 1
constraints = set []
kind = KindType }, { contents = Some (TyPrim Int32T) }))
Yeah, metavars are the trouble here.
let f' x = let v = fresh_var() in f v x; visit_t v
let f'' x = let v = fresh_var() in term' true env v x; visit_t v
Screw these visits. Let me make it term_subst
.
| TyPair(a, b) ->
match visit_t a with
| TySymbol x ->
match Map.tryFind x l with
| Some (TyRecord l) -> f l b
| Some a -> unify r a (TyFun(b,s))
| None -> errors.Add(r,RecordIndexFailed x)
| _ -> errors.Add(r,ExpectedSymbolAsRecordKey x)
| x -> errors.Add(r,ExpectedSymbolAsRecordKey x)
No, I have to do it like this for efficiency.
The same goes for the module case. Let me try running this again.
5:30pm.
inl R =
inl r = {x_=fun x => x}
r (x: 1 : i32)
inl E = list (cons: 1, list .nil ())
Now both of these work. Great.
Of course, the best way of doing it is...
open list
inl E = Cons: 1, (Cons: 2, Nil)
open list
inl (::) a b = Cons: a,b
inl E = 1 :: 2 :: Nil
This also works. I do not have lists implemented with pattern matching like F# does. It is not a priority feature for me right now.
modules:
core-
loop
array
string
list
test
Here is how the package file for core
looks like right now. There isn't much in these modules.
I wrote some parsers as well in tc.spi
, but those shouldn't be a part of core
.
5:55pm. Let me call it a day here. Even 20m ago I was starting to wind down.
I said that I should program in Spiral for a few days, but after thinking about it for a while, I am not really satisfied with that as a goal.
I think things are perfectly fine now.
6pm. Instead my next goal should be to start putting things into action.
I do not want to do random things in hopes of sussing out bugs. Instead what would get me going is finally getting Spiral to a state where it can compile programs.
That is what I should aim for.
So tomorrow, I will revisit the prepass and start planning how to make it play along with typechecking.
It won't be too long until I can bid adieu to the compilation pipeline. There is no need to hurry this.
6:10pm. Right now it is time for what gives me life - games. Let me have some fun.
I am done for the day here."
add most idiotic thing on this whole course, awaiting for sync operation (facepalm)
Removed all performance improvements because batch is fucking stupid
It sometimes interpretes some numbers as octal because they have a leading zero and everyone of course needs stupid octal numbers so all numbers with leading zeros always need to be interpreted as octal numbers. I hate it.
reduced abom life slightly reduced eridanus life slightly reduced champion of timber p2 life slightly demon scythe nerf from -25% to -33% king slime jumps higher + spike spray if you're noticeably above him (to reduce need to babysit him into not enraging) eoc fixed(?) rarely spamming sickles way too much in p3 nerfed p3 threshold to 10% life eow cursed fireballs are translucent until they redirect at you increased head defense (so body is more likely to die, meaning splits are more likely) brain p2 clone is immune to knockback if it's too far from you (this will make it pressure you better) p2 fires another set of lasers when your confusion wears off fixed qb shooting stinger sprays in p1 while dashing deviantt p1 heart rain is denser waits an extra half second after sparkling love slightly less startup/endlag between teleports on rune blast attack buffed p1 butterflies to not be effortless fixed typo that caused retinazer to do dark stars at 10% life (should be 1 life) destroyer ALL stars now have boc p1 ichor's stop-and-go homing properties, fight adjusted for it made deathray sound self repeat for mutant's penetrator rays mutant's reti ray fan abom's mega ray run styx gazer right click penetrator right click sparkling adoration adjusted, nerfed max bonus from 30% to 25% crit damage and total grazes needed from 15 to 20 abominable wand nerfed, no longer gives higher max crit damage, instead doubles crit damage gain per graze mutant eye nerfed, no longer gives extra crit damage gain per graze and max crit damage bonus reduced from +50% to +25% buffed penetrator damage 1700 to 2000 because i can
Finaly, I did itgit add --all! The fucking hibernate didn't want to save my changes to database, but I overthrown it. Darned 4 hours I was fucking with this shit. Yeah, this is a victory! Although it's half 3am, so it isn't much of a victory, but it works! Know your place, hibernate!