--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/Install.20documentation.html ---
Installation documentation sounds like a more interesting topic to me. I'm currently installing a fresh Xubuntu in VirtualBox. I'll try to follows the instruction and use the remote install script without adding any step to what is written. Wish me good luck...
But I can already see there are too many steps, and install scripts try to be too generic. What about trying to write a single bash file installing everything assuming a Debian-like OS?
I think even https://github.com/leanprover-community/mathlib/blob/master/docs/elan.md is too generic. Every step mixes all OS. Shouldn't we write three separate files?
Two of the files are really easy:
1. Install Linux 2. See the appropriate installation instructions.
I get a completely random error when using curl https://raw.githubusercontent.com/leanprover-community/mathlib/master/scripts/remote-install-update-mathlib.sh -sSf | sh
. It work flawlessly on my actual machine. In the virtual machine I get one line 28: illegal option -n
.
Try piping through bash
I tried that
Then nothing happens (no error, no installation)
Aha, that is probably because it is asking you redirected stdin
a question
so curl bla > script.sh; yes | bash ./script.sh
Does the $PATH
happen to be empty on that virtual machine Patrick?
Keeley, then it would already fail on curl
Oh but if the path is empty most normal shells check a default path and could find curl
In this case we don't want to install script to answer the question.
$PATH is not empty
The question is coming from the remote-install-update-mathlib.sh
script itself
So
curl the_script > script.sh ./script.sh
and let the user answer questions.
The weird thing is: I say it works here. But it doesn't ask any question here
Oww: the python install downloads 200Mo
Of course most of it should be already there on a real computer
Especially on a computer that has Lean and its tools up and running (-;
I can confirm that downloading the remote install script first and executing it behaves as intended
Then there is this annoying requests
warning, but I know how to get rid of it
And then everything works
elan
manages to download, launch and ask questions in one line. We need investigations
And then everything works
Including update-mathlib
and the git hooks etc...?
Including update-mathlib. I don't think git-hooks should be enabled by default
Why not?
Because it makes git slow as hell
I thought overall it would save time
Maybe I'm using it wrong
also, someone needs to find time for an obvious bug fix: currently we query GitHub for existence of a nightly before checking the local hard drive
it's not only a matter of permuting two lines, because we need to figure out the name of the olean archive we are looking for. But it shouldn't be hard
Yeah, I looked into it a while back. It's hard to fix because the name of the archive is the date, not the sha of the commit. We would need to change this convention which might break the setup of a bunch of people
This is what I feared, and the reason why I haven't try yet
Maybe we could create a file mapping dates to commit sha
... or we could have a bunch of symbolic links to the archives and name them after the sha that they correspond to
Hey the install question eaten by bash is the same as https://github.com/leanprover-community/mathlib/pull/940
The more I thought about it, the more it reminded me something
Is there any good reason to instruct user to pipe the remote install script through sh
instead of bash
?
Is bash installed on MacOS for instance?
They are still stuck with bash 3.4.2 though...
Linux has had bash 4 for ages.
What about bash read?
Do they have it on MacOS?
Je ne sais pas
I guess Git-bash includes enough of bash for this to work
@Simon Hudon I just opened https://github.com/leanprover-community/mathlib/pull/968 about all this
As soon as this gets merged, I'll ask VirtualBox to jump back in time and try again following instructions on a fresh Ubuntu
I really think there is no other way to test this. Even Travis includes too much in its default install
It looks good. Does that affect how you call curl
to install it?
I think Travis is already better than nothing. I wish we could test it better though. Especially with Windows because I don't have a Windows machine and I don't know when I'll break the setup of Windows users
I don't know anything about Windows, but I have an evil plan. Now that I installed VirtualBox, I intend to ask the computer staff here if my university is paying Windows for me anyway (this could very well be the case). If yes then I'm ready to install Windows in virtual box (yes, this is how devoted I am)
About curl. The way we tell people to use curl does not work. It never worked on systems that don't have python3 with pip already
With my PR, I believe it works as long as you replace sh
by bash
at the end of the line
To be more precise: in https://github.com/leanprover-community/mathlib/blob/master/scripts/remote-install-update-mathlib.sh#L28 this is assuming the bash version of read
is used. Those option simply don't exist in POSIX
Patrick, I'm really worried. Maybe you should go see a doctor...
I should have gone for vacations with my family instead of working all week long
Aah, on sh
vs bash
... we should also fix all the shebang lines
But I'm really tired of people fighting to install Lean/mathlib
The shebang lines are not used anyway
if you follow the instructions
But a user might end up using them...
So they better be correct
The instructions never say "download this, make it executable, execute"
But a security-minded user might still do that (after inspecting the file contents with $EDITOR
)
true
Let me push one more commit then
They will know how to fix the shebang line... but it would be a nice service to do that for them
done
Sorry to ask for another commit but can we get the README.md to reflect what you just explained about curl
?
Ok, I can do that right now, but I intend to revamp this as soon as I'll get confirmation it works on a bare Ubuntu install
done
Now wait 1hr for Travis to approve, and you'll know (-;
Or we can be evil and just hit the "merge" button.
I've already stopped and restored my virtual machine
I think this will be faster that Travis
Btw, I just read about https://developers.google.com/season-of-docs
Travis just completed checking the first commit (out of 3)
We're using software by evil microsoft... might as well have it documented by evil google...
Travis just completed checking the first commit (out of 3)
It already gave up on the 2nd
Why?
Je ne sais pas
@Simon Hudon would you mind merging right now? This way I could test on my virtual machine before leaving my office
I guess I'm being overly cautious here. I can replace the branch in the url and pretend it was merged
Note: Travis fails the olean-rs stage, nothing to do with my changes...
done
So weird. I just tried (before the merge) in a fresh Ubuntu, and the script stopped after installing python3 and pip.
Everything else worked flawlessly
I'm shutting down my VM, restoring, trying again with the official merged version
same result :sad:
What's the instruction after that install?
execution should jump to https://github.com/leanprover-community/mathlib/blob/master/scripts/remote-install-update-mathlib.sh#L57
which is a pip3 install
relauching the script works
so something's wrong inside the part that is executed when pip is not there
it almost looks like both lines 31 and 33 are executed
Can you add a print statement after the fi
on line 34?
I have no idea what's going on here. But there is a fix. The whole list of instructions starts with: type sudo apt install git curl
, so we can add python3
and python3-pip
to that list
Ok, I'll try that
:+1:
Indeed that print is effective
What if you put it at the end of the whole if ... fi
?
(after fi
)
which one?
54 or 55?
I'll try all of them
yes please
this is completely crazy
now apt aborts
Actually it was strange that it didn't wait for confirmation inside apt when it was half working
I hope you admire how I resists the temptation to suggests replacing bash with a proper programation language
Bash is so horrible even Python is better. Go for it if it helps ... except ... aren't you trying to install Python?
Yes, I'm acutely aware of this time-travel paradox
I tried something that seemed to work
Then go for it. Just don't sleep with your grandmother
What did you do?
I added the -y
to apt-get
. We are asking for confirmation right before doing it anyway
And miraculously it then worked until the end of the install procedure...
What happens at the end?
What I call the end is everything starting from line 57
/me shuts down his, VM, restore, rinse, repeat
setuptools seem to be giving a hard time to pip
bash seems to be giving a hard time to bash
"stop hitting yourself! stop hitting yourself!"
PR'ed again
An idea for future improvement: maybe update-mathlib should propose to run leanpkg add leancommunity/mathlib
if it can't find mathlib in leanpkg.toml
I'm hungry, I'll leave my office. I did almost nothing than working on mathlib installation for the past three hours
That's frustrating
Is your PR ready to merge?
Yes, I hope so
After getting some food I'll work on README.md and elan.md
It's frustrating but if it's worth the trouble if the installation indeed becomes easy
Indeed
Yes absolutely. Even a few weeks ago at Obergurgl it was painful to install mathlib, which was a shame. It would be great if it were really simple by the time of "Big Proof" at the end of this month
I don't think "simple" is a concrete goal. I think it keeps getting simpler. What specifically do you want it to be like by the end of the month?
My experience at AITP was: someone handed me a mac and I followed the instructions in the mathlib README. I typed the curl
line and it didn't work to install update-mathlib
. I piped everything to a file and ran it, and this did work but then update-mathlib
didn't work on the version of mathlib we'd just downloaded, so I had to go to my computer, find a commit hash which I knew update-mathlib would work for, git checkout that commit and then do it. It took about 20 minutes in total.
Whilst I was doing that, someone with some non-standard linux was trying to install it as well, but when they tried update-mathlib they had the wrong python or the wrong pip or something, and ended up having to upgrade their entire system to fix the problem -- it was "something they'd been meaning to do for months" but still.
"simple" has a very concrete meaning on Debian-like systems. It means sudo apt install lean
, wait 30 seconds and then use the software. Having a simple installation procedure means getting closer to this definition of simple. I think copy pasting a curl ... | bash
is almost good enough
We're not there yet
People used to Debian are probably spoiled children, but we still want them on board. It's a bit unfortunate that they are the same people that will read "If you get stuck, please come to the chat room to ask for assistance.", follow the link, see you need to register on Zulip, and walk away
How hard would it be to create a lean-mathlib
package for apt-get
?
Whilst I was doing that, someone with some non-standard linux was trying to install it as well, but when they tried update-mathlib they had the wrong python or the wrong pip or something, and ended up having to upgrade their entire system to fix the problem -- it was "something they'd been meaning to do for months" but still.
Well... people with non-standard linux are used to hacking their way through intallation instructions. They inflict that upon themselves. (I know this by experience.) I don't think we need to worry about them. They'll be fine (and happy).
Yes, the guy with the non-standard linux took far more than 20 minutes to install mathlib but seemed very happy with the situation at all points. The person with the mac was perplexed that it took so long. They also had to install homebrew or brew or whatever that package manager thing is called.
How hard would it be to create a
lean-mathlib
package forapt-get
?
There are two very different version of that question.
Creating a leanmathlib.deb
that we could put on a website and tell people: download that file and sudo dpkg -i lean-mathlib.deb
. This is very easy. I've done it for my department, so that computer people could deploy Lean in our teaching computer room
Getting lean
in the Debian/Ubuntu repositories is much harder. There are quality requirements here. And it starts with: we should get the source code for Lean and the package must be able to build lean from source. And then someone has to promise to maintain it. It looks easy right now, but wait for Lean 4...
I'm lying a bit about the first version. I didn't handle elan, only a fixed version of Lean with a fixed version of mathlib
We've talked about this before I think: and someone said that some big company (like MS) might have people who build and maintain such software packages. That could work really well.
Also... we'd never want to package mathlib. It is way too rolling release
What I would do is package the scripts for getting it
You can still dream of a day where "all elementary stuff" will be in mathlib, and most people won't need to update daily
But I think the future is a bit too uncertain
Packaging for Debian wouldn't much sense at this point
For now I would just focus on providing our own curl bla | bash
installer
yes
Also, integration with the VScode extension is a big win
We could extend that...
Honestly, my plan is the opposite
Why that?
I want to include downloading VScode and installing the Lean extension as part of the curl... | bash
thing
You want elan
to install VScode (-; :stuck_out_tongue_wink:
I think that's reasonable
Also, I would include a --emacs
option
I tried on real students: finding that extension icon you need to click is far more difficult than copy-paste something in a terminal
Also, I would include a
--emacs
option
There are no options... only different curl bla | bash
lines.
Indeed :P
I see half of my students on Tuesday and half on Friday. During the first week I can tell you I spend my Wednesday creating screenshots to distribute to students
Or maybe a question...
Do you want (i) VScode or (ii) (((super-(world-(domination))-editor) Emacs))?
I wouldn't even bother. People who will prefer emacs over VScode can take care of themselves
Right... they fall in the same category as "non-standard Linux"-users
I think we can have an easy path for the emacs user but I wouldn't ask most user what editor they want
emacs users can just grab it off MELPA (is there a similar solution for the community fork of lean-mode?)
What is "it"? We're talking about installing VScode + elan + update-mathlib... + all dependencies
But I agree that emacs users will probably be savvy enough about their system to figure out how to get what they want.
And otherwise there is always C-M-Butterfly
oh, i meant emacs lean-mode
one might have to manually set the path to the lean executable though
It's not on Melpa but it could be. It needs polishing though
I would like a one-liner for ubuntu / debian which installs VS Code and Lean and mathlib and makes a project with mathlib as a dependency and a file in src called test with a proof that 2 + 2 = 4, and all the olean files, and makes update-mathlib
work and git too. I don't care about it automatically keeping up to date. But if anyone in Edinburgh says "so how do I compile this schemes project?" I can just say "type this command"
I hope you will have it tomorrow
And I'm worried about python and pip
We are still talking about Debian/Ubuntu, right?
Right
But I guess it would be nice if it worked on a Mac too...
For a one off installation we could just dump all the mathlib olean files in with the lean files -- but then I think there are issues with timestamps
I'm pretty sure it's also east on a Mac, we only need to find one (this is much easier than finding a Windows, but still non-trivial)
If you've already decided to use virtual box, Microsoft offers isos at https://www.microsoft.com/en-gb/software-download/windows10ISO
You do not need to activate, you'll just get a nag screen
Oh, that's crazy! How can this work? Anyway, I've asked my computer team, and there should be an official way for me. They are asking (it's a very unusual request...)
I worked on the Debian side. This is crazily time-consuming, I spent more than two extra hours on this, but I now propose https://github.com/leanprover-community/mathlib/pull/974
Featuring the one line to rule them all: https://github.com/leanprover-community/mathlib/blob/debian/docs/install_debian.md
I really like the example project that you suggest in your tutorial (-;
It's replacing lean-stacks-project
which is currently in the general documentation
The last few steps of your instructions can be simplified: you can open the current working directory in VS Code by typing code .
instead of code
. Would you mind if I edited this into your branch?
I never managed to get code .
to behave this way
Oh, that's strange. Never mind then.
And I'm not sure we want to hide how to open a folder in VScode. In my teaching experience, that's the most frequent source of confusion for students (far more confusing than type class search or coercions).
No matter how often I tell them where to put files and what folder to open, I still have to go around the computer room to fix this
(France no longer has a mandatory military year for 18 years old men. So giving a list of instruction to follow without thinking does not work on first year university students)
The install instructions should be updated to reflect the migration of the scripts to mathlib-tools
(I was walking someone through the install instructions 5 minutes ago)
PR'd
the URLs inside remote-install-update-mathlib.sh
need to be updated too
I was complaining about this one hour ago, but needed to go get my children
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


If you love Telegram but don't want to leave Discord then you'll be pleased to find we've built a bridge in this channel. If you'd like to join the group in the Telegram app you can find it here: https://t.me/KomodoPlatform_Official.
Between 21-Dec-19 12:00 AM and 22-Dec-19 12:00 AM
GatewayBOT21-Dec-19 06:27 AM
[telegram] <Mixic> (re @combot: Alert! Fran Tito is a known spammer and is CAS banned. Ban is strongly recommended.)
Posted in r/komodoplatform by u/cyger • 5 points and 0 comments
GatewayBOT21-Dec-19 06:53 AM
[telegram] <DigitalWealthCreator> I am using Agama wallet. What do I need to do to prepare for the new Komodo network?
[telegram] <CryptoBattler> How long you been using agama wallet?
[telegram] <CryptoBattler> There was a bug found in it a few months ago
[telegram] <Mixic> (re @polycryptoblog: Shouldn’t affect anything for regular user, if running a full node make sure that software is updated and not on a fork when activation height hits)
[telegram] <Mixic> (re @CryptoBattler: There was a bug found in it a few months ago)
[telegram] <DigitalWealthCreator> I downloaded the new one after a bug was found in it. Is there another one I should download now for the new network? (re @CryptoBattler: There was a bug found in it a few months ago)
[telegram] <CryptoBattler> I didn't realise they fixed it or are you talking about the Verus Agama wallet.(edited)
gcharang21-Dec-19 07:00 AM
Use the latest version of VerusAgama wallet from https://veruscoin.io/wallet.html
if you are using native mode, you definitely need to use the latest
Community driven open source CPU mineable cryptocurrency with 50/50 Proof-of-Work/Proof-of-Stake, zk-SNARK zero-knowledge proof privacy.
GatewayBOT21-Dec-19 07:00 AM
[telegram] <DigitalWealthCreator> Versus
[telegram] <CryptoBattler> Ahh good, as long as you are runnuing the laterst version you should be fine (re @DigitalWealthCreator: Versus)
[telegram] <CryptoBattler> Now that I look at it. What's the differences between v0.6.0-1 and v0.6.0-5 (re @Matterbridge_kmdbot: [discord] <gcharang> Use the latest version of VerusAgama wallet from https://veruscoin.io/wallet.html
if you are using native mode, you definitely need to use the latest)(edited)
Community driven open source CPU mineable cryptocurrency with 50/50 Proof-of-Work/Proof-of-Stake, zk-SNARK zero-knowledge proof privacy.
GatewayBOT21-Dec-19 07:16 AM
[telegram] <Acura360> Click on Release Notes (re @CryptoBattler: Now that I look at it. What's the differences between v0.6.0-1 and v0.6.0-5)
[telegram] <CryptoBattler> Where do I find the release notes for v0.6.0-5. it's not on their site (re @Acura360: Click on Release Notes)
GatewayBOT21-Dec-19 08:11 AM
[telegram] <Debodebeli> Is platform upgrade finished?
GatewayBOT21-Dec-19 09:13 AM
[telegram] <CR202020> Hi Everyone
I recorded an interview with John McAfee yesterday. (See 35 sec clip in tweet below).
I told him about a coin which is more private than Monero. Can you guess which one?
I also mentioned a true atomic swap cross-chain dex that works on a mobile phone. He was surprised to hear that it was already cross-chain. :-)
https://twitter.com/CryptoRichYT/status/1208094480559169537?s=20
Just finished interviewing @officialmcafee
Taster below.
I will post it first on @BitTube & later on youtube.
Subscribe here so you don't miss out
https://t.co/1cEKZzftWBhttps://t.co/TKH1deKTTr
#privacy #freedom #mcafeedex @PirateChain @ElevateGroup01 $xmr $arrr https:/...
GatewayBOT21-Dec-19 09:38 AM
[telegram] <Suzycrabgrass> When? Komodo is not more private, pirate is (re @CR202020: Hi Everyone
I recorded an interview with John McAfee yesterday. (See 35 sec clip in tweet below).
I told him about a coin which is more private than Monero. Can you guess which one?
I also mentioned a true atomic swap cross-chain dex that works on a mobile phone. He was surprised to hear that it was already cross-chain. :-)
https://twitter.com/CryptoRichYT/status/1208094480559169537?s=20)
Just finished interviewing @officialmcafee
Taster below.
I will post it first on @BitTube & later on youtube.
Subscribe here so you don't miss out
https://t.co/1cEKZzftWBhttps://t.co/TKH1deKTTr
#privacy #freedom #mcafeedex @PirateChain @ElevateGroup01 $xmr $arrr https:/...
[telegram] <Andi> You should add $kmd (re @CR202020: Hi Everyone
I recorded an interview with John McAfee yesterday. (See 35 sec clip in tweet below).
I told him about a coin which is more private than Monero. Can you guess which one?
I also mentioned a true atomic swap cross-chain dex that works on a mobile phone. He was surprised to hear that it was already cross-chain. :-)
https://twitter.com/CryptoRichYT/status/1208094480559169537?s=20)
Just finished interviewing @officialmcafee
Taster below.
I will post it first on @BitTube & later on youtube.
Subscribe here so you don't miss out
https://t.co/1cEKZzftWBhttps://t.co/TKH1deKTTr
#privacy #freedom #mcafeedex @PirateChain @ElevateGroup01 $xmr $arrr https:/...
GatewayBOT21-Dec-19 09:52 AM
[telegram] <DarkCryptoLord> Hey! Quick question, is the upgrade completed? :)
[telegram] <Mixic> the network upgrade to codebase version 0.5.0, dubbed Obsidian Dragon was successful! Please make sure to update your wallets/full-seed nodes to the latest version! Those who do not update will not run on the correct network!
GatewayBOT21-Dec-19 10:07 AM
[telegram] <CryptoBattler> I totally missed that, thanks (re @Acura360: )
GatewayBOT21-Dec-19 10:18 AM
[telegram] <skyline2190> Man
GatewayBOT21-Dec-19 10:42 AM
[telegram] <DarkCryptoLord> Thanks! (re @Mixic: the network upgrade to codebase version 0.5.0, dubbed Obsidian Dragon was successful! Please make sure to update your wallets/full-seed nodes to the latest version! Those who do not update will not run on the correct network!)
GatewayBOT21-Dec-19 11:17 AM
[telegram] <CR202020> I need to edit first. Will be in a few more days so.
We talked about pirate chain and a little bit about atomic dex.
I mentioned Komodo....of course. :-) (re @Suzycrabgrass: When? Komodo is not more private, pirate is)
[telegram] <Suzycrabgrass> Oh wow, I want spoilers (re @CR202020: I need to edit first. Will be in a few more days so.
We talked about pirate chain and a little bit about atomic dex.
I mentioned Komodo....of course. :-))
[telegram] <Suzycrabgrass> He likes atomic dex?
[telegram] <cybersmartcoin_official> Can we trade DAG coin ( from Success Factory ) on Atomic ?
[telegram] <CR202020> He was surprised that it could already do cross chain true as. He is building his own dex which is only erc20 right now.
He really liked ARRR. (re @Suzycrabgrass: He likes atomic dex?)
[telegram] <skyline2190> When coinbene start withdrawal
KMD?
[telegram] <skyline2190> any updates?
[telegram] <Suzycrabgrass> Oh wow!! I didn't expect spoilers, thank you! (re @CR202020: He was surprised that it could already do cross chain true as. He is building his own dex which is only erc20 right now.
He really liked ARRR.)(edited)
The Security Exchange Commission is amending the definitions for accredited investors. In my opinion, this is simply further defining how the wealthy gain privilege based upon that wealth. I also provide an update on the Komodo platform as they update to v0.5.0, which include...
[telegram] <Deliriumigniter> Komodo starts at 9:32 into it.... But you really disklike the US. SEC.. you can watch the entire video lol
GatewayBOT21-Dec-19 02:00 PM
[telegram] <CR202020> +1. (re @Deliriumigniter: hey, we are fans of komodo from a while back, and we did a video)
GatewayBOT21-Dec-19 02:13 PM
[telegram] <Deliriumigniter> Thank you Crypto Rich (re @CR202020: +1. )
GatewayBOT21-Dec-19 02:47 PM
[telegram] <CR202020> Please see pm (re @Deliriumigniter: Thank you Crypto Rich)
✨Obsidian Dragon Komodo в сети! Обновления недели c
@ChangeNOW_io
https://t.co/Jg15sqdPd8
#KMD #Komodo #ChangeNOW #blockchain #AtomicDEX #ObsidianDragon #nSPV #AntaraFramework #dPoW #Tezos #BTC #Ethereum #Equihash #cryptocurrencies #trust
GatewayBOT21-Dec-19 10:56 PM
[telegram] <hansiharjunharja> Someone is swapping DEX to BTC quite cheap on AtomicDEX.
[telegram] <hansiharjunharja> At least i think that is not too expensive in comparison to what it has been.
[telegram] <Acura360> 0.001 ? (re @hansiharjunharja: Someone is swapping DEX to BTC quite cheap on AtomicDEX.)
[telegram] <hansiharjunharja> It was something like 14dex with a 100 dollars worth of btc
[telegram] <hansiharjunharja> This makes one dex quite cheap
[telegram] <Acura360> good offer
[telegram] <Acura360> Biggest volume is on DEX/KMD
[telegram] <Acura360> i would say
[telegram] <hansiharjunharja> Yeah. I just bought dex with all my btc on atomicdex
[telegram] <Acura360> :D
[telegram] <Acura360> Thats the reason why i don´t no more see this offer hehe
[telegram] <hansiharjunharja>
GatewayBOT21-Dec-19 11:22 PM
[telegram] <NateTheGreatt> Any one got links to articles on the tokenomics of the kmd coin?
[telegram] <polycryptoblog> https://link.medium.com/MLDbfeuYB2 (re @NateTheGreatt: Any one got links to articles on the tokenomics of the kmd coin?)
[telegram] <NateTheGreatt> Thanks man! Also any good place to buy kmd for us citizens? Not that binance isn't available any more (re @polycryptoblog: https://link.medium.com/MLDbfeuYB2)
[telegram] <polycryptoblog> Metalpay and Bittrex are open to US citizens (re @NateTheGreatt: Thanks man! Also any good place to buy kmd for us citizens? Not that binance isn't available any more)
[telegram] <polycryptoblog> Also available at CoinFlip ATMs
[telegram] <NateTheGreatt> I used to hold but sold and am looking to buy back, okay thanks what is the lease sketchy one if you know what I mean
[telegram] <polycryptoblog> They both are legit, The first has money transmitter licensing and Bittrex has been around for 5 years or so now.
[telegram] <NateTheGreatt> Awesome thanks again (re @polycryptoblog: They both are legit, The first has money transmitter licensing and Bittrex has been around for 5 years or so now.)


This page outlines a convention for using annotations to help developers manage Kubernetes services. These annotations can be applied to a Kubernetes service with kubectl annotate. For example:
kubectl annotate service MYSERVICE a8r.io/owner=”sallydev”
| Annotation | Description |
|---|---|
| a8r.io/description | Unstructured text description of the service for humans. |
| a8r.io/owner | GitHub or equivalent username (prefix with @), email address, or unstructured owner description. |
| a8r.io/chat | Slack channel (prefix with #), or link to other external chat system. |
| a8r.io/bugs | Link to external bug tracker. |
| a8r.io/logs | Link to external log viewer. |
| a8r.io/documentation | Link to external project documentation. |
| a8r.io/repository | Link to external VCS repository. |
| a8r.io/support | Link to external support center. |
| a8r.io/runbook | Link to external project runbook. |
| a8r.io/incidents | Link to external incident dashboard. |
| a8r.io/uptime | Link to external uptime dashboard. |
| a8r.io/performance | Link to external performance dashboard. |
| a8r.io/dependencies | Unstructured text description of the service dependencies for humans. |
Feedback? Suggestions? File an issue on GitHub.
Created by Ambassador Labs


{% extends "layout.html" %} {% block title %} Documentation {% endblock %} {% block main %}
Rook Hub is a Flask web app built by Aaron Omale, from Nigeria. As a final project for Harvard's Introduction to Computer Science course on EdX platform. I came about the idea for this site because as a rookie developer myself, I rarely see quiz sites to test my knowledge on what I've been studying. The questions on this site will challenge rookies to study harder, and also boost their confidence.


| xor.default {bit} | R Documentation |
Boolean NEGATION '!', AND '&', OR '|' and EXCLUSIVE OR xor', see Logic
.
## Default S3 method: xor(x, y) ## S3 method for class 'logical' xor(x, y) ## S3 method for class 'bit' !x ## S3 method for class 'bit' e1 & e2 ## S3 method for class 'bit' e1 | e2 ## S3 method for class 'bit' e1 == e2 ## S3 method for class 'bit' e1 != e2 ## S3 method for class 'bit' xor(x, y) ## S3 method for class 'bitwhich' !x ## S3 method for class 'bitwhich' e1 & e2 ## S3 method for class 'bitwhich' e1 | e2 ## S3 method for class 'bitwhich' e1 == e2 ## S3 method for class 'bitwhich' e1 != e2 ## S3 method for class 'bitwhich' xor(x, y) ## S3 method for class 'booltype' e1 & e2 ## S3 method for class 'booltype' e1 | e2 ## S3 method for class 'booltype' e1 == e2 ## S3 method for class 'booltype' e1 != e2 ## S3 method for class 'booltype' xor(x, y) xor(x, y)
x |
a |
y |
a |
e1 |
a |
e2 |
a |
The binary operators and function xor
can now combine any is.booltype
vectors.
They now recycle if vectors have different length. If the two arguments have different booltypes
the return value corresponds to the lower booltype
of the two.
Boolean operations on bit
vectors are extremely fast because they are
implemented using C's bitwise operators. Boolean operations on or bitwhich
vectors are even faster, if they represent very skewed selections.
The xor
function has been made generic and xor.default
has
been implemented much faster than R's standard xor
.
This was possible because actually boolean function xor
and
comparison operator !=
do the same (even with NAs), and !=
is
much faster than the multiple calls in (x | y) & !(x & y)
An object of class booltype
or logical
default
: default method for xor
Jens Oehlschlägel
x <- c(FALSE, FALSE, FALSE, NA, NA, NA, TRUE, TRUE, TRUE) y <- c(FALSE, NA, TRUE, FALSE, NA, TRUE, FALSE, NA, TRUE) x|y x|as.bit(y) x|as.bitwhich(y) x|as.which(y) x|ri(1,1,9)


Total requests since counting started: {{ requests.hits }}
Sum of request duration since counting started: {{ requests.weight }} microseconds (millionths of a second)
Total queries since counting started: {{ sqlops.hits }}
Sum of queries duration since counting started: {{ sqlops.weight }} microseconds (millionths of a second)


Related articles component Axshare link: https://nm6pq4.axshare.com/#g=1&p=article_page Dimensions:640x430px


Last seen online @localisedDatetime(latestActivity.timestamp)
}
} else {
<EMAIL_ADDRESS>Never seen online
}
}
This information automatically updates every 30 seconds.
Last refreshed at @(OffsetDateTime.now().format(DateTimeFormatter.ofLocalizedTime(FormatStyle.MEDIUM))).
There was an error updating. The information will be updated again in 30 seconds but you may need to refresh the
page to fix the issue.


public
abstract
class
ViroView
extends FrameLayout
implements
Application.ActivityLifecycleCallbacks
| java.lang.Object | ||||
| ↳ | android.view.View | |||
| ↳ | android.view.ViewGroup | |||
| ↳ | android.widget.FrameLayout | |||
| ↳ | com.viro.core.ViroView |
Known Direct Subclasses
|
ViroView is the entrypoint for Viro applications, it enables the rendering of 3D AR and VR content to an Android View. To use ViroView, instantiate one of its subclasses:
ViroViewScene
renders content directly to an Android View.ViroViewGVR
renders content in stereo for virtual reality applications using Google's GVR SDK.
This supports Google Cardboard and Google Daydream.ViroViewOVR
renders content
in stereo for virtual reality applications using Facebook's Oculus Mobile SDK. This supports
Samsung Gear and similar devices.ViroViewARCore
renders augmented reality
content using Google's ARCore library for AR tracking.
With the desired ViroView instantiated, it can then be used by creating a Scene
(or
ARScene
for AR), adding content to the Scene, and assigning it to the ViroView with
setScene(Scene)
.
Note that after instantiation, the ViroView will validate your Viro API Key. To do this, pass your
API key into AndroidManifest.xml metadata as
Public methods | |
|---|---|
void
|
dispose()
Release native resources associated with this ViroView. |
final
Controller
|
getController()
Retrieve the |
float
|
getFieldOfView()
Get the field of view for this camera, along the major (larger) axis. |
Vector
|
getLastCameraForwardRealtime()
Get the direction in which the Camera is facing (e.g. |
Vector
|
getLastCameraPositionRealtime()
Get the real-time world position from the current point of view (Camera). |
Vector
|
getLastCameraRotationEulerRealtime()
Get the real-time local orientation from the current point of view (Camera), expressed as three Euler angles. |
abstract
ViroMediaRecorder
|
getRecorder()
Returns a |
Scene
|
getScene()
Get the |
final
ViroContext
|
getViroContext()
Get the |
boolean
|
isBloomEnabled()
Returns true if bloom is enabled for this ViroView. |
boolean
|
isHDREnabled()
Returns true if HDR rendering is enabled for this ViroView. |
boolean
|
isPBREnabled()
Returns true if physically-based rendering is enabled for this ViroView. |
boolean
|
isShadowsEnabled()
Returns true if dynamic shadows are enabled for this ViroView. |
void
|
performSceneHitTestRay(Vector origin, Vector ray, boolean isHighAccuracyTest, HitTestListener callback)
Performs a hit-test along the ray defined by the the given origin and direction in world coordinates. |
void
|
performSceneHitTestWithPoint(Point point, boolean isHighAccuracyTest, HitTestListener callback)
Performs a hit-test searching for all virtual world features at the given 2D point on the view. |
Vector
|
projectPoint(Vector point)
Converts the given 3D point in the world into its corresponding 2D point on the screen. |
abstract
void
|
recenterTracking()
For VR applications, re-centers the head orientation. |
void
|
setBloomEnabled(boolean enabled)
Enable or disable bloom. |
void
|
setCameraListener(CameraListener listener)
Set a |
void
|
setFrameListener(FrameListener listener)
Set a |
void
|
setHDREnabled(boolean enabled)
When HDR rendering is enabled, Viro uses a deeper color space and renders to a floating point texture, where a tone-mapping algorithm is applied to preserve fine details in both bright and dark regions of the scene. |
void
|
setPBREnabled(boolean enabled)
Enable or disable physically-based rendering. |
void
|
setPointOfView(Node node)
Make the given |
void
|
setScene(Scene scene)
Set the |
void
|
setShadowsEnabled(boolean enabled)
Enable or disable rendering dynamic shadows. |
abstract
void
|
setVRModeEnabled(boolean vrModeEnabled)
For VR applications, set this to true to render in stereo mode. |
Vector
|
unprojectPoint(Vector point)
Converts the given 2D point on the view into its corresponding 3D point in world coordinates. |
void dispose ()
Release native resources associated with this ViroView.
Controller getController ()
Retrieve the Controller
for this view. Controller represents the user interface
through which the user interacts with the Scene
. The exact form of Controller depends
on the underlying platform. For example, for Daydream this represents the Daydream controller
(the laser pointer). For Cardboard and GearVR, Controller is effectively the head-mounted
display itself (and its tap button).
| Returns | |
|---|---|
Controller |
The Controller for this ViroView.
|
float getFieldOfView ()
Get the field of view for this camera, along the major (larger) axis. Field of view is an angle that determines how wide or narrow the camera lens is when rendering the scene.
The major axis is the axis with the larger dimension: the X axis in landscape mode, or the Y axis in portrait mode. By specifying the field of view in terms of the major axis, Viro can keep the field of view consistent upon orientation changes, when the major/minor axes swap.
You can set the field of view when using a ViroViewScene
by creating a Camera
, setting the camera's field of view with setFieldOfView(float)
, and
making that Camera's Node the point of view through setPointOfView(Node)
. The
default field of view for ViroViewScene
is 90 degrees.
The field of view cannot be set for ViroViewARCore
or ViroViewGVR
: on those
platforms, field of view is fixed by the VR headset or AR camera.
| Returns | |
|---|---|
float |
The field of view across the major axis, in degrees. |
Vector getLastCameraForwardRealtime ()
Get the direction in which the Camera is facing (e.g. in the direction of the reticle).
| Returns | |
|---|---|
Vector |
The direction the Camera is facing. |
Vector getLastCameraPositionRealtime ()
Get the real-time world position from the current point of view (Camera). The position returned is real-time in that it is the position the Camera currently appears on-screen.
| Returns | |
|---|---|
Vector |
The real-time position as a Vector .
|
Vector getLastCameraRotationEulerRealtime ()
Get the real-time local orientation from the current point of view (Camera), expressed as three Euler angles. Specifically, the X component is rotation about the X axis (pitch), the Y component is rotation about the node's Y axis (yaw), and Z is the rotation around the node's Z axis (roll). This returns the real-time orientation, meaning the orientation of the Camera as it currently appears on-screen. The returned orientation is the Camera's world orientation.
| Returns | |
|---|---|
Vector |
The rotation in Euler form as a Vector in radians.
|
ViroMediaRecorder getRecorder ()
Returns a ViroMediaRecorder
, which can be used to take screenshots of the Scene
or record video. Currently only the ViroViewARCore
supports the media
recorder.
| Returns | |
|---|---|
ViroMediaRecorder |
The ViroMediaRecorder , or null if not supported by the platform.
|
Scene getScene ()
Get the Scene
that this ViroView is currently rendering.
| Returns | |
|---|---|
Scene |
The Scene being rendered by this ViroView.
|
ViroContext getViroContext ()
Get the ViroContext
for this ViroView. The ViroContext contains internal 3D state,
and is needed when constructing certain geometries and objects.
| Returns | |
|---|---|
ViroContext |
The ViroContext for this ViroView.
|
boolean isBloomEnabled ()
Returns true if bloom is enabled for this ViroView.
| Returns | |
|---|---|
boolean |
True if bloom is enabled. |
boolean isHDREnabled ()
Returns true if HDR rendering is enabled for this ViroView.
| Returns | |
|---|---|
boolean |
True if HDR is enabled. |
boolean isPBREnabled ()
Returns true if physically-based rendering is enabled for this ViroView.
| Returns | |
|---|---|
boolean |
True if PBR is enabled. |
boolean isShadowsEnabled ()
Returns true if dynamic shadows are enabled for this ViroView.
| Returns | |
|---|---|
boolean |
True if shadows are enabled. |
void performSceneHitTestRay (Vector origin, Vector ray, boolean isHighAccuracyTest, HitTestListener callback)
Performs a hit-test along the ray defined by the the given origin and direction in world coordinates. The hit-test returns all real-world features that are intersected by the ray.
| Parameters | |
|---|---|
origin |
Vector : The ray origin in world coordinates. |
ray |
Vector : The normalized direction of the ray in world coordinates. |
isHighAccuracyTest |
boolean : True if you want this hit-test to use the geometry of each object
to find intersection points, false if you want to only use the
bounding box of each object. Performing high accuracy hit-tests has
a significant performance impact. |
callback |
HitTestListener : The callback that will receive the ARHitTestResult results.
Performs a hit-test from the camera's position in the direction of
the given ray. The hit-test returns all virtual world features that
are intersected by the ray.
|
void performSceneHitTestWithPoint (Point point, boolean isHighAccuracyTest, HitTestListener callback)
Performs a hit-test searching for all virtual world features at the given 2D point on the view. Note that since a single 2D point on view corresponds to a 3D ray in the scene, multiple results may be returned (each at a different depth).
| Parameters | |
|---|---|
point |
Point : Perform the hit-test from this X, Y screen point. |
isHighAccuracyTest |
boolean : True if you want this hit-test to use the geometry of each object
to find intersection points, false if you want to only use the
bounding box of each object. Performing high accuracy hit-tests has
a significant performance impact. |
callback |
HitTestListener : The callback that will receive the HitTestResult results.
|
Vector projectPoint (Vector point)
Converts the given 3D point in the world into its corresponding 2D point on the screen.
Note that each 2D point on the view corresponds to a continuous segment of 3D points in the world, each at
a different depth between the near and far clipping planes. The Z coordinate in the returned
Vector
identifies the depth of the projected point, where 0.0 coincides with the
near clipping plane, 1.0 coincides with the far clipping plane, and all other values are
linear interpolations between the two.
| Parameters | |
|---|---|
point |
Vector : Get the 2D point corresponding to this 3D world coordinate. |
| Returns | |
|---|---|
Vector |
The 2D point in the view's coordinate system. The Z coordinate represents the depth from 0.0 to 1.0. |
void recenterTracking ()
For VR applications, re-centers the head orientation. This resets the yaw to zero, but leaves pitch and roll unmodified.
void setBloomEnabled (boolean enabled)
Enable or disable bloom. Bloom adds a soft glow to bright areas in scene, simulating the way
bright highlights appear to the human eye. To make an object bloom, this property must be
enabled, and the objects's threshold for bloom must be set via setBloomThreshold(float)
.
| Parameters | |
|---|---|
enabled |
boolean : True to enable bloom for this ViroView.
|
void setCameraListener (CameraListener listener)
Set a CameraListener
to receive updates whenever the camera's position or orientation
changes. The camera is the current point of view of the user.
| Parameters | |
|---|---|
listener |
CameraListener : The CameraListener to receive updates.
|
void setFrameListener (FrameListener listener)
Set a FrameListener
to receive updates when a frame is drawn.
| Parameters | |
|---|---|
listener |
FrameListener : The FrameListener to receive updates.
|
void setHDREnabled (boolean enabled)
When HDR rendering is enabled, Viro uses a deeper color space and renders to a floating point texture, where a tone-mapping algorithm is applied to preserve fine details in both bright and dark regions of the scene. If HDR is disabled, then features like Bloom and PBR will not work, and tone-mapping will be disabled.
HDR is not supported on all devices.
| Parameters | |
|---|---|
enabled |
boolean : True to enable HDR for this ViroView.
|
void setPBREnabled (boolean enabled)
Enable or disable physically-based rendering. Physically based rendering, or PBR, produces
more realistic lighting results for your scenes, and provides a more intuitive workflow for
artists. To use PBR, this property must be enabled, and Material
s must use the PHYSICALLY_BASED
lighting model. PBR is controlled by a
variety of properties, see PHYSICALLY_BASED
for
details.
| Parameters | |
|---|---|
enabled |
boolean : True to enable PBR for this ViroView.
|
void setPointOfView (Node node)
Make the given Node
the point of view for the user. The Scene
in this
ViroView will be rendered from the perspective of the given Node's Camera
. This
method is used to change the user's view of the scene. Note that when in AR or VR modes, the
point of view is automatically computed based on the device's rotation and position in the
world. This method is primarily for use with ViroViewScene
.
| Parameters | |
|---|---|
node |
Node : The Node whose Camera will be used for the point of view.
|
void setScene (Scene scene)
Set the Scene
this ViroView should render. ARScene
should be used for augmented
reality applications.
| Parameters | |
|---|---|
scene |
Scene : The Scene to render in this ViroView.
|
void setShadowsEnabled (boolean enabled)
Enable or disable rendering dynamic shadows. If shadows are disabled here, shadow
casting Light
s will simply not cast a shadow.
Shadows are not supported on all devices.
| Parameters | |
|---|---|
enabled |
boolean : True to enable dynamic shadows for this ViroView.
|
void setVRModeEnabled (boolean vrModeEnabled)
For VR applications, set this to true to render in stereo mode. Stereo renders two images: one for the left eye and one for the right, each perturbed slightly to simulate depth. This mode is meant to be used in a VR headset. Set to false to render to the entire screen, for use when users do not have a headset.
Defaults to true.
| Parameters | |
|---|---|
vrModeEnabled |
boolean : True to enable VR mode.
|
Vector unprojectPoint (Vector point)
Converts the given 2D point on the view into its corresponding 3D point in world coordinates.
Note that each 2D point on the view corresponds to a continuous segment of 3D points in the
world, each at a different depth between the near and far clipping planes. The Z coordinate
in the given Vector
identifies the depth to return, where 0.0 coincides with the near
clipping plane, 1.0 coincides with the far clipping plane, and all other values are linear
interpolations between the two.
This method can be used for advanced hit-testing against real-world or virtual objects.
| Parameters | |
|---|---|
point |
Vector : Get the 3D ray corresponding to this point in the 2D view's coordinate system.
The Z coordinate represents the depth from 0.0 to 1.0. |
| Returns | |
|---|---|
Vector |
The 3D point in world coordinates. |


Bootstrap 4 crud template
N
First name
Last name
Email
Actions
1
Mark
Otto
<EMAIL_ADDRESS>2
Jacob
Thornton
<EMAIL_ADDRESS>3
Barry
Bonds
<EMAIL_ADDRESS>NEW
×
First name
Last name
Email
EDIT
×
First name
Last name
Email
DETAIL
×
First name
Mark
Last name
Otto
Email
<EMAIL_ADDRESS>DELETE
×
¿Are you sure to delete the record?


The
LIVE-Screaming
Horror Picture Show
- 2020 -
Sep 25
Oct 03
Oct 10
Oct 17
Oct 24
Oct 30
Oct 31
SEP 25
Call the Principal!
8:00 PM
OCT 3
Suburban Pagans
3:00 PM
5:00 PM
7:00 PM
OCT 10
I
HATE
Clowns
5:00 PM
7:00 PM (Part 1)
9:00 PM (Part 2)
OCT 17
That's So Meta
5:00 PM
7:00 PM
9:00 PM
OCT 24
Deader is Better
5:00 PM
7:00 PM
9:00 PM
OCT 30
A Shudder Exclusive Screaming
8:00 PM
OCT 31
Halloween Hors D'oeuvres
5:00 PM
7:00 PM
9:00 PM


{{ _("Important statement") }}
- {{ _("This system is for demonstration purposes only, please do not use real information for registration.") }}
- {{ _("The e-mails collected by the system are only used to demonstrate the e-mail verification mechanism.") }}
- {{ _("The system will periodically delete the data in the database.") }}


-
The courage to tell a hidden story
www.ted.com
Eman Mohammed is one of the few female photojournalists in the Gaza Strip. Though openly shunned by many of her male colleagues, she is given ...
-
VIDEO: Shimon Peres Needs a Job – The Shmooze
blogs.forward.com
Hiring? Shimon Peres is your man. Now that the former Israeli president is retired, a video shows off his skills at anything from pizza delivery to ...
-
Big data is better data
www.ted.com
Self-driving cars were just the start. What's the future of big data-driven technology and design? In a thrilling science talk, Kenneth Cukier looks ...
-
The Effect of Deferred and Non-Prosecution Agreements on Corporate ...
blogs.law.harvard.edu
Editor's Note: The following post comes to us from Wulf A. Kaal and Timothy Lacine of University of St. Thomas School of Law. The increasing use of ...
-
The High Line Opens Its Third and Final Phase
www.nytimes.com
The third and final phase of the High Line is like a Rorschach test, signifying different things — about urban renewal, the environment, ...
-
The magic of the Amazon: A river that flows invisibly all around us
www.ted.com
The Amazon River is like a heart, pumping water from the seas through it, and up into the atmosphere through 600 billion trees, which act like lungs. ...
-
Why a good book is a secret door
www.ted.com
Childhood is surreal. Why shouldn't children's books be? In this whimsical talk, award-winning author Mac Barnett speaks about writing that escapes ...
-
What’s next in 3D printing
www.ted.com
Just like his beloved grandfather, Avi Reichental is a maker of things. The difference is, now he can use 3D printers to make almost anything, out of ...
 Hans Rosling, with his famous charts of global population, health and income data (and an extra-extra-long ...
-
Banks Did It Apple’s Way in Payments by Mobile - NYTimes.com
dealbook.nytimes.com
JPMorgan Chase ’s chief financial officer, Marianne Lake, took the stage at a financial conference on Tuesday under strict orders not to mention her ...
-
André Balazs, the Man Who Holds the Keys
www.nytimes.com
For his new Chiltern Firehouse in London, Mr. Balazs uses a formula that is clubby English country house combined with New York-style dazzle.
-
Interstellar Movie - Official Trailer 3
www.youtube.com
The latest Interstellar movie trailer from Christopher Nolan, starring Matthew McConaughey. http://www.InterstellarMovie.com/
-
Generation-Skipping Trust Definition | Investopedia
www.investopedia.com
A type of legally binding trust agreement in which the contributed assets are passed down to the grantor's grandchildren, not the grantor's children. ...
-
DiNapoli Announces $2B Strategic Partnership With Goldman Sachs Asset ...
www.osc.state.ny.us
Office of the New York State Comptroller: Press Release
-
Why Uncle Sam wants to be your business partner
finance.yahoo.com
Exports have improved during the last few years, but the Obama administration still has a long way to go.
-
Argentine Dinosaur Was an Estimated 130,000 Pounds, and Still Growing
www.nytimes.com
The 85-foot-long dinosaur, whose remains were discovered in 2005 in Argentina but took years to excavate and prepare for study, is among the largest ...
-
President Obama to Award the Medal of Honor | The White House
www.whitehouse.gov
Performances at the White House
-
What the Arbitration Panel Didn’t Want to Hear
www.nytimes.com
An employee of Deutsche Bank Securities is questioning the handling of an arbitration case he brought against the firm — and his lawyer is asking a ...
-
Social skills - Wikipedia, the free encyclopedia
en.wikipedia.org
Social skill is any skill facilitating interaction and communication with others. Social rules and relations are created, communicated, and changed ...
-
New York City Luxury Hotel | Park Hyatt New York
newyork.park.hyatt.com
Situated in the heart of midtown, Park Hyatt New York, will be located at 157 West 57th street between Avenue of the Americas and Seventh Avenue.
-
Congressman John Mica : My Response to Barbaric Acts
mica.congressnewsletter.net
LIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dt...
-
We're making important progress in growing the economy
www.barackobama.com
But there's still more work to be done to make sure it's working for all Americans. Check out this infographic, and pass it on.
-
Are you rich enough to be a hedge fund investor?
www.cnbc.com
A lot more money might be required to invest in private funds given new rules under consideration at the SEC.
-
Why 'Authentic' Smilers Are Happier, Have Better Relationships, And Live ...
www.businessinsider.com
They're real. Unless they're not.
-
Exonerated Man Reaches $10 Million Deal With New York City
www.nytimes.com
Jabbar Collins spent 16 years in prison for the 1994 killing of an Orthodox rabbi. His case exposed several questionable tactics used by the Brooklyn ...
-
Bank of America Co-Chief Operating Officer Will Become Sole C.O.O.
dealbook.nytimes.com
The personnel moves strengthen Mr. Montag’s position as a potential successor to Brian T. Moynihan, chief executive of the bank.
-
Seth sur Twitter : "http://t.co/gSpATk5ogF"
twitter.com
Mot de passe oublié ? Vous utilisez déjà Twitter via SMS ?


File Call.lua
Functions
| Call:abort (message, ...) | Abort call or service. |
| Call:assureStats (names) | Initialize call stats - optional, but recommended - to avoid nagging when debug is enabled. |
| Call:cancel (message) | Cancel call or service. |
| Call:cleanup (status, message) | "Cleanup" function called after main function, even if main aborted due to error. |
| Call:closeStats () | Determine if any stats have not been used (only does something if (adv) debug mode enabled). |
| Call:getCaption () | Get caption, usually for subsequent restoral. |
| Call:getStat (name) | get stat value, 0 if undefined. |
| Call:incrStat (name, amt) | Increment a call stat: may or may not be initialized. |
| Call:initStats (names) | Initialize call stats - optional, but recommended - to avoid nagging when debug is enabled. |
| Call:isAborted () | Determine if call has been aborted. |
| Call:isCanceled () | Determine if a call was canceled. |
| Call:isQuit (scope) | Determine if call has quit due to cancelation or abortion. |
| Call:new (t) | Constructor for new instance objects. |
| Call:newClass (t) | Constructor for class extension. |
| Call:newStats (names) | Constructor for a call-like object that just keeps a set of stats, without being "performed" (no main function...). |
| Call:perform (context, ...) | Call (perform) main function. |
| Call:setCaption (fmt, ...) | Set a caption on a progress indicator. |
| Call:setPortionComplete (amt, ttl) | Convenience function for setting portion complete on encapsulated scope. |
| Call:setStat (name, val) | get stat value, 0 if undefined. |
| Call:unQuit () | Used by background task so it can be canceled, but not stay canceled forever. |
Functions
- Call:abort (message, ...)
-
Abort call or service.
Parameters:
-
message
: -
...
:
Usage:
Note: Do not call base class abort method here.
-
- Call:assureStats (names)
-
Initialize call stats - optional, but recommended - to avoid nagging when debug is enabled.
Parameters:
-
names
:
-
- Call:cancel (message)
-
Cancel call or service.
Parameters:
-
message
:
Usage:
cancelation means don't bother user again.
-
- Call:cleanup (status, message)
-
"Cleanup" function called after main function, even if main aborted due to error.
I'm not real crazy about the term "cleanup", but the big deal is that its guaranteed to be called regardless of the status of main function execution. "cleanup" activities can include things like clearing recursion guards, logging results, and displaying a successful completion or error message.
Parameters:
-
status
: -
message
:
Usage:
Normally no need to override - pass finale function to constructor instead.
App calls this in protected fashion - if error in cleanup function, default error handler is called.
-
- Call:closeStats ()
-
Determine if any stats have not been used (only does something if (adv) debug mode enabled).
Usage:
unsused means not set, incr'd, nor gotten. (it does NOT mean it couldn't have been set, incr'd, or gotten, given another program path).
- Call:getCaption ()
- Get caption, usually for subsequent restoral.
- Call:getStat (name)
-
get stat value, 0 if undefined.
Parameters:
-
name
:
-
- Call:incrStat (name, amt)
-
Increment a call stat: may or may not be initialized.
Parameters:
-
name
: -
amt
:
-
- Call:initStats (names)
-
Initialize call stats - optional, but recommended - to avoid nagging when debug is enabled.
Parameters:
-
names
:
-
- Call:isAborted ()
- Determine if call has been aborted.
- Call:isCanceled ()
-
Determine if a call was canceled.
Usage:
cancelation means don't bother user again.
Return value:
- cancel-message which serves as boolean (if not nil) and optional message (if not the empty string).
- Call:isQuit (scope)
-
Determine if call has quit due to cancelation or abortion.
Parameters:
-
scope
:
Usage:
Does not check for scope canceled, nor scope done.
-
- Call:new (t)
-
Constructor for new instance objects.
Table parameter elements:
- name: (string, required) operation name, used for context debugging and as guard key.
- async: (boolean, default false) true => main function runs as asynchronous task. false => synchronous.
- guard: (number, default 0) 0 or nil => no guard, 1 => silent, 2 => vocal. Hint: Use App constants; App.guardSilent and App.guardVocal.
- object: (table, default nil) if main (and finale if applicable) is method, object is required, else leave blank to call main (and finale if applicable) as static function.
- main: (function, required) main function or method.
- finale: (function, default nil) pass finale function if something to do after main completes or aborts.Parameters:
-
t
: Table holding call paramaters.
-
- Call:newClass (t)
-
Constructor for class extension.
Parameters:
-
t
:
-
- Call:newStats (names)
-
Constructor for a call-like object that just keeps a set of stats, without being "performed" (no main function...).
Parameters:
-
names
:
-
- Call:perform (context, ...)
-
Call (perform) main function.
Parameters:
-
context
: -
...
:
Usage:
Normally no need to override - pass main function to constructor instead.
Called as static function if object nil, else method.
Errors thrown in main are caught by App and passed to finale.
-
- Call:setCaption (fmt, ...)
-
Set a caption on a progress indicator.
Parameters:
-
fmt
: -
...
:
Usage:
normally pre-created, but will create default scope on demand if need be.
-
- Call:setPortionComplete (amt, ttl)
-
Convenience function for setting portion complete on encapsulated scope.
Parameters:
-
amt
: (number, required) number completed. -
ttl
: (number, default=1) out of total.
-
- Call:setStat (name, val)
-
get stat value, 0 if undefined.
Parameters:
-
name
: -
val
:
-
- Call:unQuit ()
- Used by background task so it can be canceled, but not stay canceled forever.


My duties
Residential Building
Hamra Sadat Street,NEAR CITY CAR,Facing LAU, 754 Beirut, Lebanon
18-3-2020
Residential Building
Hamra Makdisi Street, Hamra, 1103 Beirut, Lebanon
15-3-2020
Temporary advertising
Alfred Naccache Street, Achrafieh , 1042 Beirut, Lebanon
6-2-2020


--- layout: press title: Discords - Press Room - Fail Better Productions menu-item: press submenu-item: discords description: View details and photographs from the production. For details about the company and our previous productions visit www.failbetter.co.uk. popup-script: true styles: - /css/colours.css - ../press.css styles-ie6: ../press-ie6.css show: id: discords title: Discords author: after Shakespeare flyer: ../madman/madman-discords-flyer.pdf ---


Install Xcode
Get Xcode from https://developer.apple.com/downloads. Xcode 4.6 or later is required to build.
Install the Xcode Command Line Tools (located under Xcode Preferences > Downloads)
Note: Before you can use the command line tools, you must either run sudo xcode-select -switch /Applications/Xcode.app
or
set the environment variable DEVELOPER_DIR to /Applications/Xcode.app/Contents/Developer
. See the xcode-select
man page for more details.
Install Java for Mac OS X Developer Package
Download and install the latest OS-appropriate “Java for Mac OS X Developer Package” from https://developer.apple.com/downloads.
You can build with either Visual Studio 2013 or Visual Studio 2013 express. (Newer versions currently unsupported)
Use the default options for the installation.
Install Cygwin
Cygwin is a collection of utilities for Windows that includes not only a Subversion client, but also additional tools that are required to build the WebKit source. We have made a downloader available that automatically collects all of the required packages.
Download cygwin-downloader.zip.
Extract the content of the archive to some folder and start cygwin-downloader.exe
from that folder.
This will download all the Cygwin packages you need.
When all the packages have finished downloading, the Cygwin installer will launch. Choose Install from Local Directory, then click Next until the install is complete. If you are running Vista, the installer won't be able to launch automatically, so you will have to manually launch Cygwin's Setup.exe.
Note: If you are behind a proxy you need to set the http_proxy
environment variable to the URL of the proxy. This would
likely match this pattern: http[s]://[username[:password]@]somehost.com[:port]
. Where the square brackets ([]) are not part of the url but enclose url elements that are optional indicating that those elements might be missing in your case together with their enclosed delimiter such as @ and :.
Note: Vista may warn you that Cygwin did not install correctly. Ignore this warning and tell Vista that the install was successful.
Warning: If you are running Vista or Windows 7, Cygwin may have trouble with implementing fork
(the POSIX function frequently used to start child processes, needed by many of the WebKit build tools).
In order to enable cygwin1.dll
to implement fork successfully it is better if no DLL loaded in the parent process is relocated at runtime.
One way to achive this is to rebase all cygwin dlls except cyglsa64.dll
and cygwin1.dll
to base addresses that cause them to not overlap in memory.
In order to rebase all cygwin dlls a rebaseall
script is provided in the cygwin installation's bin
directory
(usually C:\cygwin\bin
).
This script must be run from ash.exe
(found in the same directory) while no other cygwin application is running.
ash.exe
has very limited command line editing features so cutting and pasting to the commandline is recommended.
The PATH
environment variable may not contain the /bin
directory by default
thus the script should be launched as /bin/rebaseall
.
If rebaseall
is complaining about failure to write to a Windows Temp directory (i.e. /cygdrive/c/Users/you/AppData/Local/Temp
),
fix the permissions on that folder (i.e. /bin/chown you /cygdrive/c/Users/you/AppData/Local/Temp
) or
change the TMP environment variable to point to a directory with the appropriate permission flags (i.e.: export TMP=/tmp
).
Note: The rebase process may need to be repeated to include any new libraries added later to cygwin by listing these libraries by full cygwin path in a file
and passing the file to rebaseall
via the -T fileName
commandline argument.
The dlls under LayoutTests/http/conf
are a relevant use case.
Remove the following lines from /home/[username]/.bashrc
(if present):
If you are behind a proxy you need to do the following to allow cygwin svn to get through the proxy (similar steps are available for your Windows svn):
svn help
. This will create in your cygwin home directory the file .subversion/servers.Install QuickTime SDK and QuickTime or GStreamer
Download QuickTime SDK for Windows from http://developer.apple.com/quicktime/download/ and install it to the default location (\Program Files\QuickTime SDK). This is needed for media support for the AppleWin port.
You'll also want quicktime itself. You don't need it to build but without it media fallbacks won't work on the AppleWin port.
The WinCairo port uses GStreamer for media support. The following files from freedesktop.org are required:
Install DirectX SDK
Download the June 2010 DirectX SDK This is needed for accelerated compositing.
Install php, we use the following steps (you need this to run http layout tests):
Optional: Install the 32-bit version of Debugging Tools for Windows
Debugging Tools for Windows includes many useful debugging tools such as WinDbg and NTSD. Some of WebKit’s tests and scripts use these tools. Follow the instructions for installing the 32-bit version of Debugging Tools for Windows.
Optional: Hotfix for 64-bit Windows to disable the user-mode callback filter for exceptions
Without the 976038 hotfix, exceptions may be thrown in callback routines that do not cause a crash but leave the application in an inconsistent state that might cause a crash later. You will need to click on "View and request hotfix downloads" and fill out the form. A link to download the hotfix and a password will be emailed to you.
Once you have installed your developer tools, the next step is getting the code.


My name is Kehui, this webpage is to document my projects that I will be doing in Engineering Academy, here in SP!


The following manifest attributes are defined for an agent JAR file:
Premain-Class
: When an agent is specified at JVM launch time this attribute specifies the agent class.
That is, the class containing the premain
method.
When an agent is specified at JVM launch time this attribute is required.
If the attribute is not present the JVM will abort.
Note: this is a class name, not a file name or path.
Agent-Class
: If an implementation supports a mechanism to start agents sometime after the VM has started then this attribute specifies the agent class.
That is, the class containing the agentmain
method.
This attribute is required, if it is not present the agent will not be started.
Note: this is a class name, not a file name or path.
Boot-Class-Path
: A list of paths to be searched by the bootstrap class loader.
Paths represent directories or libraries (commonly referred to as JAR or zip libraries on many platforms).
These paths are searched by the bootstrap class loader after the platform specific mechanisms of locating a class have failed.
Paths are searched in the order listed.
Paths in the list are separated by one or more spaces.
A path takes the syntax of the path component of a hierarchical URI.
The path is absolute if it begins with a slash character ('/'), otherwise it is relative.
A relative path is resolved against the absolute path of the agent JAR file.
Malformed and non-existent paths are ignored.
When an agent is started sometime after the VM has started then paths that do not represent a JAR file are ignored.
This attribute is optional.
Can-Redefine-Classes
: Boolean (true
or false
, case irrelevant).
Is the ability to redefine classes needed by this agent.
Values other than true
are considered false
.
This attribute is optional, the default is false
.
Can-Retransform-Classes
: Boolean (true
or false
, case irrelevant).
Is the ability to retransform classes needed by this agent.
Values other than true
are considered false
.
This attribute is optional, the default is false
.
Can-Set-Native-Method-Prefix
: Boolean (true
or false
, case irrelevant).
Is the ability to set native method prefix needed by this agent.
Values other than true
are considered false
.
This attribute is optional, the default is false
.
An agent JAR file may have both the Premain-Class
and Agent-Class
attributes present in the manifest.
-javaagent
option
then the Premain-Class
attribute specifies the name of the agent class and
the Agent-Class
attribute is ignored.
Agent-Class
attribute specifies the name of the agent class (the value of Premain-Class
attribute is ignored).


Don't compare yourself with other people; compare yourself with who you were yesterday.
Believe in yourself! Have faith in your abilities! Without a humble but reasonable confidence in your own powers you cannot be successful or happy.
When you have something to say, silence is a lie.
When you have something to say, silence is a lie.
When you have something to say, silence is a lie.


Library LibTactics
A library of additional tactics.
Implementation note: We want string_scope to be available for
the Case tactics below, but we want "++" to denote list
concatenation.
Open Scope string_scope.
Open Scope list_scope.
unsimpl E replaces all occurences of X in the goal by E,
where X is the result that tactic simpl would give when used
to reduce E.
Tactic Notation "unsimpl" constr(E) :=
let F := (eval simpl in E) in change F with E.
fold any not folds all occurrences of not in the goal. It's
useful for "cleaning up" after the intuition tactic.
Tactic Notation "fold" "any" "not" :=
repeat (
match goal with
| H: context [?P -> False] |- _ =>
fold (~ P) in H
| |- context [?P -> False] =>
fold (~ P)
end).
The following tactics call (e)apply with the first hypothesis
that succeeds, "first" meaning the hypothesis that comes earliest
in the context, i.e., higher up in the list.
Ltac apply_first_hyp :=
match reverse goal with
| H : _ |- _ => apply H
end.
Ltac eapply_first_hyp :=
match reverse goal with
| H : _ |- _ => eapply H
end.
Tactic Notation "assert_eq" ident(x) constr(v) :=
let H := fresh in
assert (x = v) as H by reflexivity;
clear H.
Tactic Notation "Case_aux" ident(x) constr(name) :=
first [
set (x := name); move x at top
| assert_eq x name
| fail 1 "because we are working on a different case." ].
Ltac Case name := Case_aux case name.
Ltac SCase name := Case_aux subcase name.
Ltac SSCase name := Case_aux subsubcase name.
Ltac SSSCase name := Case_aux subsubsubcase name.
Ltac SSSSCase name := Case_aux subsubsubsubcase name.
Example
One mode of use for the above tactics is to wrap Coq's induction tactic such that it automatically inserts "case" markers into each branch of the proof. For example:
Tactic Notation "induction" "nat" ident(n) := induction n; [ Case "O" | Case "S" ]. Tactic Notation "sub" "induction" "nat" ident(n) := induction n; [ SCase "O" | SCase "S" ]. Tactic Notation "sub" "sub" "induction" "nat" ident(n) := induction n; [ SSCase "O" | SSCase "S" ].
Within a proof, one might use the tactics as follows:
induction nat n. (* or [induction n] *) Case "O". ... Case "S". ...
If you use such customized versions of the induction tactics, then the Case tactic will verify that you are working on the case that you think you are. You may also use the Case tactic with the standard version of induction, in which case no verification is done.
In general, you may use the Case tactics anywhere in a proof you wish to leave a "comment marker" in the context.
ltac_map applies a function F, with return type T and
exactly one non-implicit argument, to everything in the context
such that the application type checks. The tactic returns a list
containing the results of the applications.
Implementation note: The check for duplicates in the accumulator (match acc with ...) is necessary to ensure that the tactic does not go into an infinite loop.
Implementation note: The check for duplicates in the accumulator (match acc with ...) is necessary to ensure that the tactic does not go into an infinite loop.
Ltac ltac_map F :=
let rec map acc :=
match goal with
| H : _ |- _ =>
let FH := constr:(F H) in
match acc with
| context [FH] => fail 1
| _ => map (List.cons FH acc)
end
| _ => acc
end
in
let rec ret T :=
match T with
| _ -> ?T' => ret T'
| ?T' => T'
end
in
let T := ret ltac:(type of F) in
let res := map (@List.nil T) in
eval simpl in res.
ltac_map_list tac xs applies tac to each element of xs,
where xs is a Coq list.
Ltac ltac_map_list tac xs :=
match xs with
| List.nil => idtac
| List.cons ?x ?xs => tac x; ltac_map_list tac xs
end.
ltac_remove_dups takes a list and removes duplicate items from
it. The supplied list must, after simplification via simpl, be
built from only nil and cons. Duplicates are recognized only
"up to syntax," i.e., the limitations of Ltac's context
check.
Ltac ltac_remove_dups xs :=
let rec remove xs acc :=
match xs with
| List.nil => acc
| List.cons ?x ?xs =>
match acc with
| context [x] => remove xs acc
| _ => remove xs (List.cons x acc)
end
end
in
match type of xs with
| List.list ?A =>
let xs := eval simpl in xs in
let xs := remove xs (@List.nil A) in
eval simpl in (List.rev xs)
end.
This page has been generated by coqdoc