Takes the automatically identified river node positions generated by get_EHYPE_rivers or get_FVCOM_rivers and splits or removes them based on thresholds of discharge for the former and distance from the open boundary join with the coastline. Mobj = fix_river_nodes(Mobj) DESCRIPTION: The automatic identifcation of model nodes at which river inputs are discharged sometimes leads to problems with model stability. Specifically: 1. Nodes very close to the open boundary join with the coastline can also cause high velocities to occur which if you have bounds checking enabled, will stop the model. 2. Very large discharges into relatively small elements (e.g. the Rhine discharge) cause the model to crash. This function checks that: 1. Rivers are deleted if their distance from the open boundary join with the coastline is less than the specified threshold. 2. Any rivers with discharges above the specified threshold are split over a number of nodes such that each node has a maximum discharge less than the treshold. This order is relatively important otherwise the splitting could put nodes within the land/open boundary joint radius and reduce the river discharge for a given river by eliminating only some of the river nodes. INPUT: Mobj - struct generated by get_EHYPE_rivers or get_FVCOM_rivers with the following fields: nVerts - number of nodes in the model domain nObs - number of open boundaries lon, lat - nodal positions in spherical coordinates tri - unstructured grid triangulation table read_obc_nodes - open boundary node IDs nRivers - number of rivers in the model domain river_nodes - currently identified river nodes river_names - currently identified river names river_flux - river discharge time series max_discharge - river discharge threshold above which rivers will be split over several nodes (in m^{3}s^{-1}). dist_thresh - distance from the open boundary nodes which connect with land within which nodes will be removed from the river data arrays. OUTPUT: Mobj - struct with adjusted river_* fields listed above. TODO: - Check we don't split a river node into nodes which fall within the distance threshold for the land/open boundary joint. Author(s) Pierre Cazenave (Plymouth Marine Laboratory) Revision history: 2013-12-13 First version based on the EHYPE section of my create_files_monthly.m script. 2014-01-30 Fix a bug revealed when running this script on a larger model domain whereby the splitting of discharges across multiple nodes when a threshold discharge is exceeded didn't work if more than one river exceeded that threshold. Also add better exclusion of candidate river nodes (those with two land boundaries only are now excluded, as well as open ocean nodes and existing river nodes). 2015-09-24 Add check for whether we actually have any rivers to process. ==========================================================================
0001 function Mobj = fix_river_nodes(Mobj, max_discharge, dist_thresh) 0002 % Takes the automatically identified river node positions generated by 0003 % get_EHYPE_rivers or get_FVCOM_rivers and splits or removes them based on 0004 % thresholds of discharge for the former and distance from the open 0005 % boundary join with the coastline. 0006 % 0007 % Mobj = fix_river_nodes(Mobj) 0008 % 0009 % DESCRIPTION: 0010 % The automatic identifcation of model nodes at which river inputs are 0011 % discharged sometimes leads to problems with model stability. 0012 % Specifically: 0013 % 1. Nodes very close to the open boundary join with the coastline 0014 % can also cause high velocities to occur which if you have bounds 0015 % checking enabled, will stop the model. 0016 % 2. Very large discharges into relatively small elements (e.g. the 0017 % Rhine discharge) cause the model to crash. 0018 % 0019 % This function checks that: 0020 % 1. Rivers are deleted if their distance from the open boundary join 0021 % with the coastline is less than the specified threshold. 0022 % 2. Any rivers with discharges above the specified threshold are 0023 % split over a number of nodes such that each node has a maximum 0024 % discharge less than the treshold. 0025 % This order is relatively important otherwise the splitting could put 0026 % nodes within the land/open boundary joint radius and reduce the river 0027 % discharge for a given river by eliminating only some of the river 0028 % nodes. 0029 % 0030 % INPUT: 0031 % Mobj - struct generated by get_EHYPE_rivers or get_FVCOM_rivers with 0032 % the following fields: 0033 % nVerts - number of nodes in the model domain 0034 % nObs - number of open boundaries 0035 % lon, lat - nodal positions in spherical coordinates 0036 % tri - unstructured grid triangulation table 0037 % read_obc_nodes - open boundary node IDs 0038 % nRivers - number of rivers in the model domain 0039 % river_nodes - currently identified river nodes 0040 % river_names - currently identified river names 0041 % river_flux - river discharge time series 0042 % max_discharge - river discharge threshold above which rivers will be 0043 % split over several nodes (in m^{3}s^{-1}). 0044 % dist_thresh - distance from the open boundary nodes which connect with 0045 % land within which nodes will be removed from the river data arrays. 0046 % 0047 % OUTPUT: 0048 % Mobj - struct with adjusted river_* fields listed above. 0049 % 0050 % TODO: 0051 % - Check we don't split a river node into nodes which fall within the 0052 % distance threshold for the land/open boundary joint. 0053 % 0054 % Author(s) 0055 % Pierre Cazenave (Plymouth Marine Laboratory) 0056 % 0057 % Revision history: 0058 % 2013-12-13 First version based on the EHYPE section of my 0059 % create_files_monthly.m script. 0060 % 2014-01-30 Fix a bug revealed when running this script on a larger 0061 % model domain whereby the splitting of discharges across multiple 0062 % nodes when a threshold discharge is exceeded didn't work if more than 0063 % one river exceeded that threshold. Also add better exclusion of 0064 % candidate river nodes (those with two land boundaries only are now 0065 % excluded, as well as open ocean nodes and existing river nodes). 0066 % 2015-09-24 Add check for whether we actually have any rivers to 0067 % process. 0068 % 0069 %========================================================================== 0070 0071 subname = 'fix_river_nodes'; 0072 0073 global ftbverbose 0074 if ftbverbose 0075 fprintf('\nbegin : %s\n', subname) 0076 end 0077 0078 % Check we actually have some rivers to process. 0079 if Mobj.nRivers < 1 0080 warning('No rivers specified in the domain.') 0081 0082 if ftbverbose 0083 fprintf('end : %s\n', subname) 0084 end 0085 return 0086 end 0087 0088 % Remove nodes close to the open boundary joint with the coastline. 0089 % Identifying the coastline/open boundary joining nodes is simply a case of 0090 % taking the first and last node ID for each open boundary. Using that 0091 % position, we can find any river nodes which fall within that distance and 0092 % simply remove their data from the relevant Mobj.river_* arrays. 0093 obc_land_nodes = nan(Mobj.nObs, 2); 0094 for n = 1:Mobj.nObs 0095 obc_land_nodes(n, :) = [Mobj.read_obc_nodes{n}(1), ... 0096 Mobj.read_obc_nodes{n}(end)]; 0097 for d = 1:2 0098 [dist, idx] = sort(sqrt(... 0099 (Mobj.lon(obc_land_nodes(n, d)) - Mobj.lon(Mobj.river_nodes)).^2 + ... 0100 (Mobj.lat(obc_land_nodes(n, d)) - Mobj.lat(Mobj.river_nodes)).^2 ... 0101 )); 0102 if min(dist) < dist_thresh 0103 % Delete the positions with indices less than the threshold. 0104 % This could be more than one river node. 0105 inds = find(dist < dist_thresh); 0106 if ftbverbose 0107 % Have to loop through the indices because fprint'ing a 0108 % cell array (the river names) is tough... 0109 for i = 1:length(inds) 0110 fprintf('Remove river %s at %.2f, %.2f\n', ... 0111 Mobj.river_names{idx(inds(i))}, ... 0112 Mobj.lon(Mobj.river_nodes(idx(inds(i)))), ... 0113 Mobj.lat(Mobj.river_nodes(idx(inds(i))))) 0114 end 0115 end 0116 Mobj.river_nodes(idx(inds)) = []; 0117 Mobj.river_flux(:, idx(inds)) = []; 0118 Mobj.river_names(idx(inds)) = []; 0119 end 0120 end 0121 end 0122 0123 clear obc_land_nodes n d dist idx inds 0124 0125 % For some of the rivers, the discharge is very large and is the source of 0126 % model instability (e.g. the Rhine crashes my irish_sea_v20 grid). So, 0127 % identify discharges in excess of some value and split that discharge over 0128 % adjacent elements, making sure they're still valid nodes and not used for 0129 % another river. Do this second so we don't have to worry about removing 0130 % nodes based on their distance from the land/open boundary joint which 0131 % have been split, which is the case if these two steps are reversed. 0132 riv_idx = 1:size(Mobj.river_flux, 2); 0133 riv_idx = riv_idx(max(Mobj.river_flux) > max_discharge); 0134 0135 % Find the appropriate nodes from the coastline nodes. This is mostly 0136 % lifted from get_EHYPE_rivers.m. 0137 [~, ~, ~, bnd] = connectivity([Mobj.lon, Mobj.lat], Mobj.tri); 0138 boundary_nodes = 1:Mobj.nVerts; 0139 boundary_nodes = boundary_nodes(bnd); 0140 coast_nodes = boundary_nodes(~ismember(boundary_nodes, ... 0141 [Mobj.read_obc_nodes{:}])); 0142 clear boundary_nodes bnd 0143 0144 % Find all the nodes which are connected to two land nodes. These cause 0145 % problems with the search for valid river nodes. I can't think of an 0146 % elegant way of doing this, so brute force it is. This is a bit slow (~10 0147 % seconds) on my grid with ~13000 coastal nodes. 0148 nogood = nan(size(coast_nodes)); % clear out the nans later. 0149 for nn = 1:length(coast_nodes) 0150 [row, ~] = find(Mobj.tri == coast_nodes(nn)); 0151 if length(row) == 1 0152 nogood(nn) = coast_nodes(nn); 0153 end 0154 end 0155 nogood = nogood(~isnan(nogood)); 0156 coast_nodes_valid = setdiff(coast_nodes, nogood); 0157 clear nn row nogood 0158 0159 if ftbverbose 0160 fprintf('%i river(s) exceed the specified discharge threshold (%.2f m^{3}s^{-1}).\n', length(riv_idx), max_discharge) 0161 end 0162 0163 for r = riv_idx 0164 0165 % Eliminate any existing river nodes from the list of candidates. 0166 candidates = setdiff(coast_nodes_valid, Mobj.river_nodes); 0167 0168 % Extract the river data for the rivers in excess of the threshold so 0169 % we can remove them from the existing arrays. 0170 river_flux = Mobj.river_flux(:, r); 0171 river_node = Mobj.river_nodes(r); 0172 river_names = Mobj.river_names(r); 0173 % Replace the current time series with NaNs. We'll remove them to 0174 % after we've split the rivers in riv_idx. If we remove them here, then 0175 % the indices in riv_idx get offset by some amount (1 position each 0176 % time). Doing that is hard to track, so we'll replace with NaNs and 0177 % remove afterwards. 0178 Mobj.river_flux(:, r) = nan; 0179 Mobj.river_nodes(r) = nan; 0180 Mobj.river_names{r} = 'REMOVEME'; 0181 0182 % Split the discharge based on the number of times the specified 0183 % maximum fits into the actual maximum. So, if the maximum is 10000 0184 % m^{3}s^{-1} and max_discharge is 2000 m^{3}s^{-1}, then you split 0185 % over 5 nodes. 0186 nsplit = ceil(max(river_flux) / max_discharge); 0187 0188 % Scale the flux by nsplit. 0189 river_flux = river_flux / nsplit; 0190 0191 % We can keep the original node, but we need to find the 0192 % remaining nsplit-1 nodes. 0193 fv_obc = river_node; 0194 fv_names = {sprintf('%s_%i', river_names{1}, 1)}; 0195 fv_flow = repmat(river_flux, [1, nsplit]); 0196 0197 for ff = 2:nsplit 0198 % Update the list of candidates to exclude those we've just found. 0199 candidates = setdiff(candidates, fv_obc); 0200 0201 [~, idx] = min(sqrt( ... 0202 (Mobj.lon(river_node) - Mobj.lon(candidates)).^2 + ... 0203 (Mobj.lat(river_node) - Mobj.lat(candidates)).^2)); 0204 0205 % Now we can check if this node is an FVCOM-compatible one 0206 % (element of which it's a part has no more than one land 0207 % boundary). 0208 [row, ~] = find(Mobj.tri == candidates(idx)); 0209 0210 if length(row) == 1 0211 % This is a bad node because it is a part of only one element. 0212 % The rivers need two adjacent elements to work reliably (?). 0213 % So, we need to repeat the process above until we find a node 0214 % that's connected to two elements. We'll try the other nodes 0215 % in the current element before searching the rest of the 0216 % coastline (which is computationally expensive). 0217 0218 % Remove the current node index from the list of candidates 0219 % (i.e. leave only the two other nodes in the element). 0220 mask = Mobj.tri(row, :) ~= candidates(idx); 0221 n_tri = Mobj.tri(row, mask); 0222 0223 % Remove values which aren't coastline values (we don't want to 0224 % set the river node to an open water node). 0225 n_tri = intersect(n_tri, candidates); 0226 0227 % Of the remaining nodes in the element, find the closest one 0228 % to the original river location. 0229 [~, n_idx] = sort(sqrt( ... 0230 (Mobj.rivers.positions(r, 1) - Mobj.lon(n_tri)).^2 ... 0231 + (Mobj.rivers.positions(r, 2) - Mobj.lon(n_tri)).^2)); 0232 0233 [row_2, ~] = find(Mobj.tri == n_tri(n_idx(1))); 0234 if length(n_idx) > 1 0235 [row_3, ~] = find(Mobj.tri == n_tri(n_idx(2))); 0236 end 0237 % Closest first 0238 if length(row_2) > 1 0239 idx = find(candidates == n_tri(n_idx(1))); 0240 % The other one (only if we have more than one node to 0241 % consider). 0242 elseif length(n_idx) > 1 && length(row_3) > 1 0243 idx = find(candidates == n_tri(n_idx(2))); 0244 % OK, we need to search across all the other coastline 0245 % nodes. 0246 else 0247 % TODO: Implement a search of all the other coastline 0248 % nodes. My testing indicates that we never get here (at 0249 % least for the grids I've tested). I'd be interested to 0250 % see the mesh which does get here... 0251 continue 0252 end 0253 fprintf('alternate node ') 0254 end 0255 0256 % Update the node ID list and the river names list. The flux we've 0257 % already done because we know it's just river_flux/nsplit in 0258 % nsplit columns. 0259 fv_obc(ff) = candidates(idx); 0260 fv_names{ff} = sprintf('%s_%i', river_names{1}, ff); 0261 end 0262 0263 if ftbverbose 0264 fprintf('Split river %s over %i nodes.\n', river_names{1}, nsplit) 0265 end 0266 0267 % Now we can append these new rivers to the existing list of 0268 % discharges, nodes and names. 0269 Mobj.river_flux = [Mobj.river_flux, fv_flow]; 0270 Mobj.river_names = [Mobj.river_names; fv_names']; 0271 Mobj.river_nodes = [Mobj.river_nodes, fv_obc]; 0272 end 0273 0274 % Remove all the original river fluxes for the split rivers. Check we're 0275 % doing the right columns by checking if the first row of the fluxes are 0276 % all NaNs for the riv_idx indices. 0277 if all(isnan(Mobj.river_flux(1, riv_idx))) 0278 Mobj.river_flux(:, riv_idx) = []; 0279 Mobj.river_nodes(riv_idx) = []; 0280 Mobj.river_names(riv_idx) = []; 0281 end 0282 0283 % Tidy up. 0284 clear r riv_idx river_flux river_nodes river_names nsplit ... 0285 boundary_nodes coast_nodes candidates fv_flow fv_dist ... 0286 fv_names fv_obc idx mask n_tri row ff 0287 0288 if ftbverbose 0289 fprintf('end : %s\n', subname) 0290 end


thats correct, dpow checkpoints are in komodostate and signedmasks files, but less important, as once 1 notarization happens your are protected anyway.(edited)
blackjok3r22-Apr-19 05:28 AM
Just going to leave this here, Im working on payments CC again today, but if anyone is around and wants to get started on some migrate testing ping me, and I will test out the migrate script and make sure its still working, and fix it if not.. (edited)
1
smk762 - dracocanis ominator22-Apr-19 09:02 AM
I'm low on time but can fund anyone who needs DRAGON or HOUND for testing, just throw me an @
blackjok3r22-Apr-19 09:26 AM
have about 3000 of each too.
CrisF22-Apr-19 09:26 AM
Hi, @smk762 - dracocanis ominator, I should be able to get into it a little this week and quite a bit more over the weekend/ next week.
blackjok3r22-Apr-19 09:27 AM
Yeah likely by the time anyone has any free time, I will have the script done
2
really busy with some difficult stuff atm, and rather not get too deistracted
gt22-Apr-19 09:28 AM
i'll try some migrates when we're ready
1
CrisF22-Apr-19 09:28 AM
NP. If you need anyone to send out funds I can help out with that. (Have to get some funds first though, haha)
blackjok3r22-Apr-19 09:40 AM
might do the script later tonight, but really need to finsh what I started here before getting distracted on other things. Doesnt seem a lot to go.
CrisF22-Apr-19 09:43 AM
Sounds important. No problem to finish up what you're onto.
If we set it up for later in the week we should be able to get a few people involves
1
CrisF22-Apr-19 10:04 AM
Hi @LabsAssistant ,
Please use https://kmdlabs.io as the official KMDLabs website address.
3
2
kmdlabs.io is currently being redirected to the .com site so there is no change in the site itself.
The site will be moved to it's new .io home as time permits.
Thanks
daemonfox22-Apr-19 12:44 PM
quick question... having trouble importing a z addy...
Agama Win UI only asks for WIF but im assuming the secret-extended-key-main1qd... version is not in WIF for privkeys?
So how do you import with that type of key?
ComputerGenie 👴👴👴22-Apr-19 01:12 PM
secret-extended-key-main1qd... is a Wallet Input Format
daemonfox22-Apr-19 01:12 PM
ok...
i see the issue
without triggering a rescan... it works...
i can see the address listed... going to restart the wallet now...
1
but before, with rescan... Win UI throws repeated errors and will not import... it corrupts the wallet.dat and forces it into .bak format.
daemonfox22-Apr-19 01:55 PM
Has anyone else seen any users complain about lost wallets with the move to v 3.5?
Pirate wallet took a dump the moment it opened and I had to manually run the command in the CLI window to force import and scan the z key
lost a 35MB wallet... new one is scanning and is half way done now...
smk762 - dracocanis ominator22-Apr-19 02:39 PM
How'd you mean? If you can offer more details I'll let devs know. My pirate wallet was fine tho.
I don't mine to it, but get a few mining users with joinsplit issues from time to time. Not just on new releases.
Mostly native wallet issues are due to rough exit
jl777c22-Apr-19 02:42 PM
is the automated windows wallet corruptor enabled?
I just DLd v 3.5 and launched it and launched Pirate. It failed to load and I saw the wallet gile change to .bak. Relaunched and new wallet.dat was created. Tried to restart it, rename and restart all same.
So I used the clean wallet to import the key via the UI and toggled the Trigger Rescan switch. It announced it was importing in the pop up then repeated red pop ups that refresh dashboard failed.
ComputerGenie 👴👴👴22-Apr-19 03:20 PM
maybe #deleted-channel ?
daemonfox22-Apr-19 03:20 PM
That wallet also corrupted(edited)
so clean wallet again, import no rescan and that got the address... but starting the Pirate coin manually with the UI flag to rescan using Daemon Params still did not trigger a rescan properly so I did it manually in the CLI and that worked.
@ComputerGenie 👴👴👴 ill paste it there as well
CMaurice23-Apr-19 07:01 AM
Didn't get any notifications, updated, manually built komodo:
various scripts we have developed on STAKED so far, none of these are perfect and some might not even work. use them as examples of what you can do. - KMDLabs/PoS_scripts
4
2
The tokens stuff is just a tokenid hexstring as an optional param at teh createburntrasnaction step.
Should be trivial to add that to the script as a question or something if someone can do this.
That should get you guys started testing out token mighrates and normal migrates.
Alright25-Apr-19 03:45 AM
good shit, will work on it today
blackjok3r27-Apr-19 05:24 AM
Guess nobody checked it, because it crashed for me just then. Pushed fix.
kmdkrazy27-Apr-19 05:29 AM
I would if I didnt have to pay bills........plus I'm just a weekend non coder..."tester".... k64 looks like you guys could do business together though
blackjok3r27-Apr-19 05:30 AM
yeah possibly. The labs teting platform would be suited to testing gamescc, thats what it was made for. We shall see how it turns out I guess... Still havent even launched the chain
kmdkrazy27-Apr-19 05:30 AM
Boring
You got it bro
They only have 1 side
blackjok3r27-Apr-19 05:31 AM
Its clearly ready to go. I'm pretty sure of that. Everything we worked on is working perfectly stable.
most of the code is in KMD itself now... you can sync staked chains with it and they work as far as I know.
kmdkrazy27-Apr-19 05:32 AM
You have the other 3
I'm sure you can make a mutual agreenent
Or not....this is why people fork I guess
Open source is the JL777 way....
You guys are the way to make it work well......
I'll go back to lurking
blackjok3r27-Apr-19 05:39 AM
hah np man. Just watching my kid waiting on this migrate test to finish. Then it will be back to paymentsCC stuff...
I'm watching my kid watch Evengers
We have to watch 2 this weekend......well 4
blackjok3r27-Apr-19 05:41 AM
I have two girls.  Her mum came picked her up and took her to the hospital. Guess she ate something bad should be ok I think. Made a huge mess though haha.
kmdkrazy27-Apr-19 05:41 AM
I had to catch up
BTW my smart one scored 1500 on SAT in 10th...last month.......just bragging
Sorry about your babies
blackjok3r27-Apr-19 05:43 AM
lol, oldest is only 5 here but she does pretty well at school so far.
kmdkrazy27-Apr-19 05:44 AM
I guess he missed 11 questions
2 on math 2 on language and 7 on reading
I'm thinking full scolarship.....hopefully to a JL777 funded school
1
blackjok3r27-Apr-19 05:48 AM
There were a fwe things I paid attention to at school. Algebra and physics, turned out to be super useful skills... while most others were like "what this is usless", I just learnt it and got really high grades... Didnt even apply for uni, because I failed English in year 10 and never did it for TEE (uni enterance thing here) school was rpetty confused why I was doing TEE subjects when I couldnt apply for uni with my overall subkect selection but they let me do it.
kmdkrazy27-Apr-19 05:49 AM
He keeps asking me how to use blockchain in games.....and doesnt believe it.....I keep telling him to lurk........he must not be as smart as his scores
blackjok3r27-Apr-19 05:49 AM
to do a blockchain game properly is hard. Like very hard it seems.
kmdkrazy27-Apr-19 05:50 AM
Maybe he knows
But I know you can
He says......who's gunna mine?
Doesnt bitcoin end?
blackjok3r27-Apr-19 05:51 AM
any problem can be solved with enough time and thaught. We 90% solved that problem here already, still a few small thigns to iron out. But cant know the solution until we start using it and see what works and what doesnt/
kmdkrazy27-Apr-19 05:52 AM
Who's gonna process the TX and for what reason?
blackjok3r27-Apr-19 05:52 AM
Notarypay, and notary mine/staking.
kmdkrazy27-Apr-19 05:53 AM
Send me a link
blackjok3r27-Apr-19 05:53 AM
special nodes... very hard things become quite easy with a little bit of centralisation...
kmdkrazy27-Apr-19 05:53 AM
I need to educate these amazing boys of nine
10 print "Thank You";
20 goto 10
blackjok3r27-Apr-19 05:54 AM
lol, I think most of the stuff is descrived on kmdlabs.io some of it may be a litle dated havent had time to update it. Have one alst thing to add to LABS stuff, and that is a way to use founders rewards with notarypay, too big a limitation right now, without it(edited)


« CSS « CSS Reference
The z-index
CSS property specifies the z-order of an element and its descendants. When elements overlap, z-order determines which one covers the other. An element with a larger z-index generally covers an element with a lower one.
For a positioned box, the z-index
property specifies:
auto
positioned elements
visual
z-index: auto | <integer> | inherit
0
. This means that the z-indexes of descendants are not compared to the z-indexes of elements outside this element. Negative z-index
values are supported correctly starting in Gecko 1.9 / Firefox 3. Previous versions implemented the CSS 2 behavior, not the CSS 2.1 behavior that is compatible with other browsers.
| Browser | Lowest Version |
|---|---|
| Internet Explorer | 4.0 |
| Firefox (Gecko) | 1.0 (1.0) |
| Opera | 4.0 |
| Safari (WebKit) | 1.0 (85) |
position
property


Upgrade To The Enterprise Edition
Trying The Enterprise Edition
Transitioning from the default Community Edition to the Enterprise Edition simply requires a license file (there is no other installation to do):
- Get a Trial License File at www.aceql.com/aceql-trial.
- You'll receive an email with the license file.
- Install the received
aceql-license-key.txt
license file in the
<Installation Directory>/AceQL/lib-server/
subdirectory.
- Restart the AceQL Server.
Buying The Enterprise Edition
When buying a license, the license is valid for one year and applies to up to 5 SQL database names.
There's no limitation to the number of computers installed. This means you're granted the right to access up to 5 databases from any computer.
The "my_company_sales"
database, for example, may be accessed by AceQL from your test server, your pre-production server and your production server.
Licenses are available for purchase on our Online Shop.
If you need more volume, please don't hesitate to contact us at sales@kawansoft.com.


{% extends "layout.html" %} {% block title %}You might be cancelling a charge outside your authority{% endblock %} {% block page_title %} Confirm location {% endblock %} {% block body %} {% include 'partials/phase_banner_beta.html' %} {% include 'partials/validation_partial.html' %} You might be cancelling a charge outside your authority {% if validation_errors and validation_errors['location-confirmation'] %} {{ validation_errors['location-confirmation'].inline_message }} {% endif %} I have the authority to cancel a charge in this location. {% include 'partials/submit_form_partial.html' %} back to charge or return to main menu {% endblock %}
back to charge
or return to main menu


Store is a TidyModule that can be used in your application to list existing applications, sessions and display your session's modules and edges.
Should be initialized and injected in your application.
tidymodules::TidyModule
-> Store
Inherited methods
ui()
Store's ui function.
Store$ui()
UI elements.
server()
Store's server function.
Store$server(input, output, session)
input
Shiny input.
output
Shiny output
session
Shiny session
clone()
The objects of this class are cloneable with this method.
Store$clone(deep = FALSE)
deep
Whether to make a deep clone.


◆ __construct()
◆ sendEmail()
Create the PHPMailer instance and send the e-mail.
◆ setEmail()
Based on the type value passed in post, the context of the email and its data changes.
◆ $email_data
◆ $email_filename
◆ $email_subject
◆ $recipient_email
◆ SMTP_FROM_NAME
| const SMTP_FROM_NAME = "Cicerone" |
|
protected |
◆ SMTP_HOST
| const SMTP_HOST = "smtp.gmail.com" |
|
protected |
◆ SMTP_P
| const SMTP_P = "X36Y$^8s6u" |
|
protected |
◆ SMTP_PORT
◆ SMTP_USERNAME
| const SMTP_USERNAME =<EMAIL_ADDRESS>|
|
protected |
The documentation for this class was generated from the following file:


I have done my B.Tech in Mathematics & Computing from Delhi Technological University (formerly known as Delhi College of Engineering) and I am currently a programmer employed at TATA Health, Bangalore.
I am ardent learner and problem solver. Software development, data science and several domain of mathematics intrigue me. You’ll often find me solving competitive questions from websites like Codeforces, Hackerrank or Hackerearth in my free time. Nothing gives me more satisfaction than a neatly and efficiently written code.
C++ has always been my forte and I am well acquainted with Java and Python.
Talking about extra curricular activities, I have been a proud volunteer and head of technology dept at NSS, DTU. With a motto of “Not me but you” we guys organized a lot of events like rural immersion camps, women empowerment events, blood donation, road safety campaign, donation drives, awareness campaigns etc. In our flagship event “rural immersion camp”, we adopted the village Shikarpur, UP and worked to revamp every sector possible.
Executed Long Short Term Memory (LSTM)
and Gated Recurrent Units
(GRU) to predict price of cryptocurrency
Determined closing price of cryptocurrency for 30 days with
mean absolute error percentage 7.37%
Implemented Extreme Gradient Boosting
in Python to predict probability of default of customer with 87.13% accuracy
Envisaged potential
improvement
in risk management & superior oversight of banking organizations
Worked in a team of two and created a
C# based fully functional
animated virtual assistant which can interact with user through its
self-triggered actions.
Action and transitions between states is random and based on Transition
Probability Matrix(TPM)
Implemented Artificial Neural Network
(ANN) based IDS model in MATLAB to detect and classify malicious attacks
Employed feedforward and back propagation algorithms to
minimize overall computational overhead, and achieved and accuracy of over 89%


--- layout: post title: The sinking feeling date: 2014-07-22 13:42:28.000000000 -07:00 categories: - family tags: [] status: private type: post published: false meta: _edit_last: '1' excerpt: !ruby/object:Hpricot::Doc options: {} ---
I wanted to write about a feeling that I've sensed for some time now. I suppose in many contexts, it's known as an existential angst. The central question is why.
Coming to grips with the finite nature of the world makes me sad.  That will be the end of me. For billions of others on the planet, my death will mean nothing. But it certainly occupies me with a great deal of worry. Probably this worry is what compelled humans through evolution to survive -- because faced with annihilation and nonexistence, we try to overcome all odds.
But what's really the point? It all ends in nothing. We're here for a while. We get to experience life through our senses. For some, life is full of all kinds of wonderful experiences.  But then one day it just kind of goes away, fading into blackness.
You meet the end one day and it's all over. No one really remembers you. Or if they do, so what?
I guess this means that you should really make the most of life while you have it. But what does that even mean to make the most of life? Does it mean to excel at something like programming? All that knowledge goes away at death. Does it mean to bring to the table what you're best at, helping move the human race forward?
What am I really best at? Writing, creative thinking. But what does that actually for me, for us?


Test cases for CSV.parseLine()
,,
["", "", ""]
one,two,three
["one", "two", "three"]
one,two, three
["one", "two", "three"]
one, two, three
["one", "two", "three"]
one,two,three
["one", "two", "three"]
one , two , three
["one", "two", "three"]
one,"two", three
["one", "two", "three"]
one,two, 'three'
["one", "two", "three"]
"one",two, 'three'
["one", "two", "three"]
"one","two's", 'three'
["one", "two's", "three"]
'one',"two's", 'three'
["one", "two's", "three"]
'one','two\'s', 'three'
["one", "two's", "three"]
'"one',"two's", 'three'
["\"one", "two's", "three"]
'"one','two\'s', 'three'
["\"one", "two's", "three"]
"\"one\"","two's", "'three'"
["\"one\"", "two's", "'three'"]
"\"one\"","two\'s", "'three'"
["\"one\"", "two\\'s", "'three'"]
one's,'s and two, three
[
"one's,'s and two",
"three"
]
"one's,'s and two, three
[
"\"one's,'s and two, three"
]
'"\"one\"","two\'s", "'three'"'
[
"\"\\\"one\\\"\",\"two's\", \"'three'\""
]
'"\"one\"","two\'s", "\'three\'"'
[
"\"\\\"one\\\"\",\"two's\", \"'three'\""
]
one's,'s and two, three
["one's,'s and two", "three"]
Test cases for CSV.parse()
c1,c2,c3
one,two,three
"four","five","six"
'seven','eigth','nine'
[
["c1", "c2", "c3"],
["one", "two", "three"],
["four", "five", "six"],
["seven", "eight", "nine"]
]


A personal trainer can help you achieve long lasting results more quickly and efficiently.
A trainer helps you to avoid injury and other mistakes you might make along the way.
QPersonalTrainer is dedicated to giving clients the best in personal training. If you want the best for your clients, join the growing number of fitness experts and exercise professionals using QPersonalTrainer to improve client results—and business!
find out moreOur training programs literally transform our clients’ lives.
See what they have to say…


As an Emergency Support Services user you'll be able to register new evacuees, complete an existing evacuee self-registration, or if needed, search and edit evacuee information.
| Last Name | First Name | Task # | ESS File # | Evacuated From | Evacuated To | Action | |
|---|---|---|---|---|---|---|---|
|
|
{{rowItem.lastName}} | {{rowItem.firstName}} | {{rowItem.incidentTaskNumber}} | {{rowItem.registrationId}} | {{rowItem.evacuatedFrom}} | {{rowItem.evacuatedTo}} | Finalize View |
{{notFoundMessage}}


| Patient Id | Disease | Age | Gender | Eligibility | Days Recorded |
|---|
Store the penalty amount in contract as patient
Record the patient steps in contract as insurance provider
Settle incentive at end of the month as insurance provider
While recording patient details please use patient Id from 1 to 9 only. Since local ganache provides only 10 accounts out of which one has been allocated to Insurance provider while contract deployment.
| Patient Id | Disease | Age | Gender | Eligibility | Days Recorded |
|---|
Store the penalty amount in contract as patient
Record the patient steps in contract as insurance provider
Settle incentive at end of the month as insurance provider


A while back at a techno party, a friend of mine asked me if I would like to try 20mgs of 5-MeO-DALT. He told me it was nice and mellow, and this was a small dose, and it wouldn't be anything too extreme. It was in the wee hours of the morning, probably around 9am, and I had already been playing with chemicals all night (Ketamine, LSD, and MDMA). I tried it, and didn't feel a thing, because I was on the influence of so many other drugs and was super tired.
So, I decided to order a gram of 5-MeO-DALT from a research chemical website on the internet for my own experimentation at a later date.
I received the packet it in the mail, and took a few small unmeasured licks out of the bag during the course of a hard partying weekend, and again; didn't feel a thing.
Fed up with this nonsense, I got off of work early, went home, and decided to get some results.
I've done a lot of drugs, I wasn't scared of a little sketchy white powder. My cheap scale says I did about 60 milligrams, but it's a cheap scale and I rounded down instead of up.
I was in a good mood, well slept, and had a relatively empty stomach. The setting was at my house on a nice sunny day at around 3pm.
I put the powder on my tongue and washed it down with some water, and then took my dogs out for a walk. On my stroll around my neighborhood, I started coming up in about 20 minutes. I was feeling lightheaded, warmer, and my legs were getting a little wobbly. I started getting higher so I walked towards home just to be safe.
At first the come up was a little similar to LSD or MDMA. But I didn't get any visuals or and happy fuzzy feelings. Instead, my inner monologue turned towards a negative direction, and then into total panic. I decided that I should head for my room and lay on my bed and ride it out.
I've had some bad trips on other substances, so I told myself that I'd be okay. My curiosity got the best of me, so I started reading about 5-MeO-DALT experiences on the web, while peaking.
I decided that I had taken way too many drugs before, and they didn't kill me, so this one most likely wouldn't kill me either. I got myself together, lit a cigarette, and smoked it in a hammock in my yard. I was done freaking out, and I didn't feel so high anymore either. It was about 4:30pm.
I made some phone calls to some people I love, and then walked my dogs again, and by 5:00pm I was pretty much back to normal and feeling much better.
Maybe if I was in a fun environment, like a dance party, or at least with some friends, it could be fun. I'll try it again sometime, maybe 20 milligrams on the hour every hour for four hours.
All in all, this my 5-MeO-DALT trip sucked. The come up wasn't anything to write home about, and can be summed up as disorienting. The peak was more or less a panic attack. My chest got a bit tense, and I was taking heavy breaths. My thoughts were troubled, and I just wanted it to stop. The comedown wasn't bad, maybe a bit confusing.

Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


News
UPDATED: 18 people injured after bus and lorry crash in Castleblayney
Monaghan
by David LynchUPDATED 5pm: According to RTE, 18 people were injured in the incident, with one person receiving serious but not life-threatening injuries.
UPDATED 4pm: The southbound lane of the N2 has reopened, according to gardai.
According to reports, one person remains trapped on the bus at present.
The N2 is closed north of Castleblayney at the Ballybay turn-off as emergency services deal with the crash there. Gardai advise using the Old N2 (R183) to divert away.
Southbound delays are building now on the Old N2 (R183) through Castleblayney itself.
Emergency services are currently at the scene of a road traffic collision which occurred on the N2 outside Castleblayney, Co. Monaghan today, involving a truck and a bus.
It is understood three persons have been taken to hospital with what have been described as "minor injuries". It is also understood that at least 30 people were on board the bus.
No further information is currently available regarding this matter as Gardaí are still at the scene.
Diversions are currently in place in the area
Further updates will follow.


Event is emitted when a user starts typing in a channel.
event: "TYPING_START"
Channel: TextChannel | DirectMessageChannel
The relevant channel instance for where the user has started typing
User: User
A User instance describing the user who has started typing
Timestamp: number
UNIX timestamp (in seconds) of when the user started typing
Guild?: Guild
A Guild instance where the channel resides
This event is emitted when a user starts typing in a channel in which the bot user is a member of. This could be a TextChannel or DirectMessage instance.
| Connecting to Discord |
|


Current User: {{currentUserName}}, Current Azure ID: {{currentWebAccountId}}, {{goodMessage}} {{badMessage}}
Delete Disconnect
Reassign to Current User Reassign to Current User


--- layout: overview_common title: Activity Handbook ---
Activity Handbook
We observe, define, and spread contagion. Comprehending the vastness of invisible networks and transmissions is perplexing. We invite you to delve into the world of contagion through hands-on activities, experiments, and games!
This activity handbook is an accompaniment to our digital exhibition CONTAGION, and we hope that through these activities, Do-It-Yourself experiments, and puzzles, you will gain a deeper appreciation for the ways in which contagion weaves in and out of human life.
Please feel free to download the handbook, use and share it. Ideal for those who are 18 and above. Parental guidance is advised for visitors under 18 years of age.
You can share your creations with us on social media and tag us @scigalleryblr along with using the hashtags #ExperimentWithSGB and #TransmissionStartsNow.


Are you ready for the umpteenth Docker + Python application out there? Good, so am I. This one is going to focus on an existing application and the steps I take to turn it into an image that can be shoved up on a host running docker. I choose my IsThatWho but only because I had it laying around and it has external dependencies (redis, namely). It's not the most elegant thing, but it's there.
Dependencies
The obvious one is redis, probably followed by the stuff listed in requirements.txt. Less obvious is the TMDB key, but keys and configuration are dependencies, too. Additionally, you may want to consider angular as a dependency as well, but given it's loaded from a CDN that's not a huge concern for me right now.
Lucky for me, redis has an existing image that can be pulled. The Python dependencies and environment keys I can deal with. So let's deal with those instead of fiddling with redis.
Building a Python app container
This is a first pass, just make it run attempt at building the application container. There will be some good practice stuff in it, but that's more incidental to get the Flask dev server running properly.
The Dockerfile looks like:
FROM python:3.6 COPY . /app WORKDIR /app RUN pip install -r requirements.txt ENV PYTHONUNBUFFERED 1 ENF PYTHONDONTWRITEBYTECODE 1 EXPOSE 5000 ENTRYPOINT ["entrypoint.sh"] CMD ["dev"]
If you're familar with Docker, then there's nothing surprising here. If you're not, this provisions an image that looks exactly like what you'd imagine. The biggest oddity here could be the ENTRYPOINT directive -- this directs Docker to what should be the main process of the container, CMD is the default argument.
As for what that entrypoint looks like.
#!/bin/bash case $1 in dev) shift; export FLASK_APP=app.py export FLASK_DEBUG=1 exec flask run --host=<IP_ADDRESS> $@ ;; *) exec "$@" ;; esac
Just a simple bash script. The strangest thing about it might be why we tell Flask to listen to <IP_ADDRESS>. The reason for that is not that I want everyone to be able to find the app on my network (that's a separate issue) but because Flask binds to localhost as the default and the localhost it sees is the docker container. Even if you run docker inspect on the running container and go to the IP address, Flask will refuse the connection.
Other than that, it provides the ability to pass extra arguments to the flask command (say you wanted to bind to a different port, etc).
With all that squared away, let's build this bad boy:
docker build -t itw:1 .
And once it's built:
docker run -p 5000:5000 -e TMBD_KEY=... --rm itw:1 * Serving Flask app "app" * Forcing debug mode on * Running on http://<IP_ADDRESS>:5000/ (Press CTRL+C to quit) * Restarting with stat * Debugger is active! * Debugger pin code: ...
Of course if you try to do anything, you'll find a lovely traceback in the terminal about the redis connection being refused. Whoops. The next step is getting redis running along side this container.
Running Redis
Kill the flask app container, as we're going to need to make changes to it and it's configuration.
The first is updating the isthatwho/api.py to connect to a host named "redis" rather than localhost. The next is setting up a redis server in another container.
docker pull redis docker run --rm --name some-redis redis
You should see a bunch of redis-y content on your terminal. In another, let's set up the app container again. Instead of using docker-compose yet, there's something to be said for doing it the manual way to apperciate what docker-compose does under the hood.
docker run -p 5000:5000 -e TMBD_KEY=... --rm --link some-redis:redis itw:1
Assuming you have an actual TMDB key loaded, you'll be able to interact with the application. Wooooo.
Docker-Compose It
Building a docker-compose.yml out of all this is actually pretty straight forward and it ends up looking like this:
version: 2 services: itw: build: . command: ["dev"] environment: - TMDB_KEY=... ports: - 5000:5000 links: - redis redis: image: redis
Running docker-compose up will build the itw container and start it and the redis container
As for creating WSGI server (uwsgi/gunicorn/etc) and nginx components for this, I'm not going to delve into that (they're 99.99% droll configuration files). I will say that you should run the uwsgi process in the itw container -- or even extend from it and add the WSGI server to it -- and nginx in a separate container. I recommend taking a look at the jwilder/nginx image which does some fancy docker magic to dynamically configure nginx to proxy to many containers based on exposed ports and a special environment variable (why not a label, I don't know).
Addressing reloading
The biggest issue here is that if we make a change to the code, then the container needs to be rebuilt to pick that up. If you're used to using the flask reloader in local development, this is a huge burden as you need to take extra steps to update your code.
This is the easyto address as you can mount a volume over /app that will provide the container with live updates to the code. In fact, it's easy enough to show:
services: itw: volumes: - ./isthatwho:/app/isthatwho command: ["dev", "--reload"]
If you docker-compose up now and then in a separate terminal run touch isthathwho/api.py you'll see thene reloader get to work. You can also see how the ability to pass extra arguments to the entrypoint script is paying off dividends now. We didn't need to change the entrypoint script (which would need a rebuild to pick up), instead just kill the docker containers and start them again.
From here
For a quicky and dirty "shove an existing application into docker" this isn't too bad. I'd recommend reading up on the docker-compose syntax to see what each individual piece does and other interesting ways to build upon this example, in particular using the env_file setting to load a configuration file instead of having a bunch of declarations in the compose file itself.
However, this isn't the end of this dockerizing IsThisWho. Instead, I want to use this as a starting point to address other issues I've found in other docker + python tutorials (and in general, most docker tutorials and articles) as well as some woes I've run into using docker in my daily dev work.
I spilled my brains, spill some of yours.


This is a short video I made in Final Cut Pro. The idea behind it was to make a headline for an article. The article was about how videogames are rising into a bigger industry than it was in the 80's and 90's. Based on the videogame theme I pulled some of my favorite videogame characters and made them part of the headline


Unlike most fish, the Asian arowana reaches sexual maturity relatively late, after 3–4 yr. The females produce few eggs, 30-100, which are quite large. After the eggs are fertilized, the Asian arowana exhibits great parental care with paternal mouthbrooding. Both the fertilized eggs and larvae are brooded within the male's mouth.
The Asian arowana (Scleropages formosus) comprises several phenotypic varieties of freshwater fish distributed geographically across Southeast Asia. While most consider the different varieties to belong to a single species, differentiates these varieties into multiple species. They have several other common names, including Asian bonytongue, dragonfish, and a number of names specific to the different color varieties. Native to Southeast Asia, Asian arowanas inhabit blackwater rivers, slow-moving waters flowing through forested swamps and wetlands. Adults feed on other fish, while juveniles feed on insects. These popular aquarium fish have special cultural significance in areas influenced by Chinese culture. The name 'dragonfish' stems from their resemblance to the Chinese dragon. This popularity has had both positive and negative effects on their status as endangered species.


App for visualizing real life simple mechanical events on android phones by inbuild simulation engine.
The app was built with openGL ES 2.0 API for 2D Graphical Simulation and BOX2D API for Physics Engine.
The software was developed to perform tasks by receiving informations from a human brain(EEGs signals) and detecting patterns.
Neurosky mindwave device was used for recording brain EEG signals followed by pattern detection of eye blinks’ and other events to control computer.
This Software was developed for recognising the current speaker from the database of speakers based on their individual speech characteristics.
Feature Extraction was performed using MFCC followed by LBGVQ method to match features for training and testing purposes.
Platform helping customers to avoid queues for tables in restaurants, lunches and events.
We developed Fancymonk as a table reservation app, waiterless app and website.
We initiated with building Fancymonk waiterless admin dashboard having real time syncing and notification in Angular 2 framework.
Now we can support development upto angular 6.
We began freelancing with a small IOT based android app for indoor navigation in an Arena filled with Ble Device.
Since then dozens of multiplatform web apps and android apps have been successfully delivered with active backend support.
Due to high demands from our clients for better user experience, we gladly commenced UI/UX designing and web content writing as our service.


Michaela Walsh on cloud nine after adding another Irish elite title to collection
by Neil Loughran at the National StadiumMICHAELA Walsh was on cloud nine at the National Stadium in Dublin last night as she powered to yet another Irish Elite title, stopping brave Emma Agnew in the second round of their featherweight final.
It was the ninth time the north Belfast woman has come up trumps on finals night and, after an edgy first round, she showed her class when a series of impressive attacks forced Agnew into three counts before the fight was waved off.
“She’s a very good boxer, so awkward to hit so the first round was very cagey. I thought I won it but I knew I needed to do more,” said the Monkstown fighter.
“Once I got in my rhythm, I didn’t know if it was going to be stopped but I knew it was only a matter of time. When I caught her with the first standing count, I tried not to rush it but when I caught her the second time I could see she was a bit hurt.
“I’ve always said, finals night is my favourite night of boxing, the atmosphere in here. A lot of champions didn’t enter this year but I had to enter, I wanted to enter. If you’re a true champion you’ll want to enter and, especially with me and Aidan in them, I wanted to make history.
“There’s no stopping us.”
The focus for all the top boxers in the country now switches to the European Olympic qualifiers, which take place at London’s Copperbox Arena next March.
And Walsh is determined to keep her dreams of making it to next summer’s Games in Tokyo alive.
“Hopefully I should be selected, fingers crossed.
“I’ll be back down at the High Performance unit, and hopefully both of us go to the qualifiers.”
Meanwhile, in one of the fights of the night, Tyrone flyweight Jude Gallagher pulled off the result of the night when he scored a unanimous win over the tough Regan Buckley in the 52kg decider.
Buckley, who recently competed at the World Elite Championships and won European Games bronze back in June, started strongly but a succession of crunching body shots saw Gallagher take control.
And once the Two Castles teenager got his nose in front, he never looked back.
“It’s the biggest win yet, especially in my first year as an elite boxer,” said the 18-year-old, who also beat reigning champion Adam Hession in the semi-final.
“It was a tough weight division against three tough lads, beat them all convincingly, all unanimous decisions, so I’m chuffed with that, chuffed with the performances throughout the tournament.
“I’ve been training extremely hard for these championships with Eric [Donovan], my dad, I just know at the minute I’m in the best shape I’ve ever been in and I’m just performing absolutely amazing.
“It’s the best I’ve ever been.”
In a cracking light-heavyweight final, Dublin’s Emmett Brennan dethroned Thomas O’Toole in a classic clash of styles, the bruising Brennan eventually getting the nod on a 3-2 split.


---
layout: post
title: Learning programming the Alec the Geek way
tags:
- Education
- LinkedIn
- Personal Opinion
- Work Practices
status: publish
type: post
published: true
meta:
_edit_last: '451289'
---
Updated 31/Dec/2009 after reviewing material from Spidertools.com
My son, NimbleJack, is doing computing at school -- 6 months so far using VB 6 and next year (our academic year starts in Jan here) he will be doing a 12 month VCE IT course -- again using VB 6 <sigh>.
I've been pretty unimpressed with the teaching: a) The lack of core understanding about topics like classes and algorithm design b) reliance on the VB GUI stopping the students practising important coding skills. So I've been encouraging Jack to teach himself Python in order to get around some of the shortcomings of the school course (as I see them).
I chose Python because:
- Powerful enough to be a proper language
- OOP features
- Not as hard to use and learn as C++ or Java
I did consider Ruby -- however a lot of the Ruby code I have seen it pretty arcane to a neophyte, despite what the Rubyists claim.
Next we come to my approach to teaching. This is something of a shock to many of my 'students' (I'm not actually a teacher by profession by the way) as I see myself as a mentor to assist self learning rather than a 'listen as I tell you all your need to know' approach. How does that work? The job of the mentor as I see it is:
- Set the topics to be learned
- Review progress (by looking at students working code and exercise answers)
- Identify appropriate texts and other resources for the student
- Set the learning pace, with the co-operation of the student
- Answer questions and be a resource when things get confusing for the student
Apart from that students are on their own. i.e. they have to
- Plan their studies
- Do the reading
- Takes notes
- Look for other resources
- Complete the exercises
- Identify issues and formulate enquires or questions
- Articulate issues with the teaching and associated material (which teacher is perfect or can't improve?)
I had made the mistake of expecting Jack to learn from Lutz's Programming Python which a) assumed to much knowledge about programming systems and libraires and b) does not introduce OOP. This is not a criticism of the book, for someone like me it's a very useful resource and it is aimed at advanced programming. I've just bought "Python Programming: An Introduction to Computer Science" by Zelle. This text concentrates on introducing core programming concepts OO, recursion, string processing etc. Python is used as the vehicle of instruction.
I'm looking forward to seeing how well the new text works, and of course once basic programming has been mastered we can move onto "What a young developer needs to know"


CSS TEXT
Hi, my name is Jeremy WU, come from China, 30 years old. And I'm a software eng. Here is my home page.
Thanks
顶端对齐
居住对齐
底部对齐
Here is a demo about Text direction!
Here is a demo about Text direction!
Overline
Line Through
underline
Here is text uppercase
Here is text lowercase
Here is text capitalize
Hello
Hello
Hello


vignettes/intro_ppi.Rmd
BioRad provides code to plot a PPI of an ODIM scan. An ODIM scan can be extracted from an ODIM polar volume (pvol), though at moment of writing this documentation, single scans from folders cannot yet be read in.
Here is example code how to extract a scan from a polar volume:
# locate example polar volume
pvol.path <- system.file("extdata", "volume.h5", package="bioRad")
# load the pvol:
pvol <- read.pvol(pvol.path)
# copy the first scan to a new object 'scan2'
scan2 <- pvol$scans[[1]]
scan2
## Polar scan (class scan)
##
## parameters: VRADH DBZH ZDR RHOHV PHIDP
## elevation angle: 0.5 deg
## dims: 480 bins x 360 rays
scan2$params[[4]]
## Polar scan parameter (class param)
##
## quantity: RHOHV
## dims: 480 bins x 360 rays
This is example code how to create a PPI plot:
# load an example scan:
data(SCAN)
# make ppi for the scan
ppi <- ppi(SCAN)
# plot the first scan parameter of the ppi, which in this case is "VRADH"
plot(ppi)
# plot the reflectivity quantity
plot(ppi,param="DBZH")
# change the range of reflectivities to plot to -30 to 50 dBZ
plot(ppi,param="DBZH",zlim=c(-30,50))
Additionally different types of underlying maps can be added using the function basemap
:
# grab a basemap that matches the extent of the ppi
basemap <- basemap(ppi)
## downloading zoom = 9 ...
# map the reflectivity quantity of the ppi onto the basemap
map(ppi,map=basemap,param="DBZH")
## Warning: Removed 1 rows containing missing values (geom_rect).
# download a different type of basemap, e.g. satellite imagery
### see get_map() in ggmap library for full documentation of options ###
basemap <- basemap(ppi,maptype="satellite")
## downloading zoom = 9 ...
# map the radial velocities onto the satellite imagery
map(ppi,map=basemap,param="VRADH")
## Warning: Removed 1 rows containing missing values (geom_rect).
More functionallity of the package bioRad, such as plotting vertical profiles of birds (VPB), adjusting the radar cross section and calculating migration traffic rates, can be find in its documentation.


P!zzahat
Home
Menu
Order Here
Contact Us
For feedback, inquiries, or concerns:
Kindly contact us via:
pizzahat@gmail.com


--- layout: post title: Testes Automáticos em Acessibilidade Web ---
| Issue | AccessMonitor | Notes of Manual Evaluation by Terrill Thompson |
|---|---|---|
| 1. No headings: | Yes (0 headings) |
The page has clear visible headings, but no HTML heading markup. |
| 2. No alt text: | Yes (5/9 w/ no alt) |
There are several informative images with no alt attributes. |
| 3. Bad alt text: | No | There are three decorative images with alt="horizontal line graphic". |
| 4. Color contrast: | No | The navigation menu has poor color contrast. |
| 5. Dropdown menu: | No | The dropdown menu has many problems, the greatest being that the submenus are hidden from everyone (including screen reader users), and can only be revealed by hovering with a mouse. |
| 6. Visible focus: | No | There is no visible focus indicator for links. In fact, the browser's default indicator has been overridden in CSS. |
| 7. Link text: | Yes (3 instances found) |
There are three instances of "click here" as link text. |
| 8. Color used for information: | No | The application form says "required fields are in blue". Also, hyperlinks in the main body are not underlined, therefore only distinguishable as links by color. |
| 9. Language: | Partial (page lang detected) |
There is no lang attribute that identifies the language of the page as English. There is also a block of Spanish content that has no lang attribute identifying it as Spanish. |
| 10. Form fields: | Yes (13 inputs without labels) |
There are no <label> , <fieldset> , or <legend> elements in the application form. |
| 11. CAPTCHA: | Partial (Captcha's Image w/ no alt detected) |
The application form includes a visual CAPTCHA. |
| 12. Form validation: | No | If the user submits the form with errors, an error message appears at the top of the form that says "Your form has errors. Please correct them and resubmit." This error message provides insufficient help to the user, and is not coded in a way that exposes it to screen reader users. |
| 13. ARIA Landmarks: | No | There are no ARIA landmark roles on this page. |
| 14. Modal dialog: | No | One of the "click here" links triggers a modal dialog, which is not truly modal. It fails to trap keyboard focus, cannot be closed by pressing the escape key, and is not easily accessible to screen reader users. |
| 15. Carousel: | No | Carousels are complex widgets with many parts. The carousel on this page is a fairly typical carousel with many problems: Keyboard users are unable to access all components; screen reader users are unable to operate the controls or access and understand all content; and people who are distracted by movement or who need more time to read the content are unable to pause the animation. |
| 16. Data table: | Yes (1 table without <th> ) |
The page includes a data table that does not use <th> elements to identify row and column headers. |
| 17. Abbreviations: | No | The data table includes several abbreviations that could be difficult for all users to understand, including at least one ambiguous one ("ECO" could be "Ecology" or "Economics"). Providing a mechanism for expanding abbreviations (e.g., the <abbr> element) is only a Level AAA success criterion in WCAG 2.0, but in this case would be extremely helpful. |
| 18. HTML validation: | Yes (5 HTML errors found) |
Validation of this page yields five errors, all related to images with no alt text. |
Nota: AccessMonitor found 17 depricated elements: <b>
. AccessMonitor also found the lack of "skip to main content" link.


No. Objective Lua has no relation to Objective C other than borrowing the syntax and part of the name. The Objective Lua class hierarchy is entirely different (although it's inspired by it). The distribution package is completely standalone and requires no additional software other than Lua, Lpeg, and (optionally) Lua Markdown.
Right now, no, but I'm hoping to see one soon.
None. It's all in pure Lua.
Objective Lua code should run at the same speed as classic Lua code --- that's what it compiles to, after all. Objective Lua method calls are identical to Lua method calls.
However, right now creating Objective Lua objects is quite expensive, so if your program does a lot of object churn, you may see performance issues there. Also, the natural Objective Lua coding style is to use lots of little methods rather than a few big ones, so there is increased overhead due to more table lookups. Of course, you don't have to write your code like that...
Naturally. It's much faster, too.
As it's all in stock Lua and contains no platform-specific code, almost certainly. I only tested it on Linux, though.
That's a very good question. And the answer is... I don't know. If anyone gets it working, please let me know!
Thank you.


Hi {{ user.first_name }},
Hooray! New episodes of {{ show.title }} are airing today. 📺🎉
Have a wonderful day, The UpTV team
This email was sent to {{ user.email }} by UpTV.


¯\_(ツ)_/¯
Can I use a USB webcam with PlayStation 4?
by Kelly PeirceBest answer: No. Sony's PlayStation 4 does not provide support for standard USB webcams. In fact, the company requires that you use its proprietary camera, which uses a different jack than USB.
- The only PS4 camera: PlayStation Camera ($41 at Amazon)
- A professional option: Elgato HD60 S ($135 at Amazon)
Cameras and PlayStation
Rather than adding support for third-party USB cameras, Sony has been trying to make its camera a must-have accessory since they first introduced the EyeToy camera for PlayStation 2. Unfortunately for Sony, the EyeToy and upgraded PlayStation Eye were far from that must-have. Camera games were limited at best throughout the life of the PlayStation 2 and 3.
It wasn't until 2010 with the launch of PlayStation Move that the camera started gaining a little traction. Over 15 million Moves were shipped by 2012, but the continued lack of any games worth owning meant it would eventually die out as EyeToy had — if the upcoming PlayStation VR headset hadn't been able to save it.
With the announcement of PSVR, it's connection to PlayStation Move, and streaming, the PlayStation Camera is back. Twitch and other streaming services were growing in popularity by the launch of the PlayStation 4, and players wanted a camera so viewers could see them as they played games. However, PlayStation still hadn't added USB webcam support, which left streamers with only two options: They could use the PlayStation Camera, which plugs in via an aux cable rather than a standard USB, or get a capture card. For the average user, the PlayStation Camera was a good enough option and it sold out quickly during the PlayStation 4 launch.
The newest model offers 1280x800 resolution at 60 frames per second (FPS) and the dual-lens designed for Move and PSVR games offer player tracking. With a built-in microphone its a great option if you need a webcam for your PS4. However, it does lack bonuses like background removal and low light correction, which some USB webcams offer.
Capture streaming
Without support for third-party webcams, a number of streamers have opted to use a capture card like the Elgato HD60 S. These cards are either internal cards for the PC or external gadgets that allow you to record or stream your PlayStation 4 gameplay to your PC. With the gameplay being streamed to a PC, streamers can use their own USB webcam.
These webcams often have better image quality and more resolution options than the PlayStation Camera. They are designed specifically for image capture and recording, whereas the PlayStation Camera was designed for games first and as a camera second.
 However, for the average user this is an expensive solution.
With the history of Sony's cameras over the years, I don't have high hopes for USB webcam support on the upcoming PlayStation 5 either. So if you are just wanting to video chat with friends, I suggest you pick up the PS Camera.
Camera ready
PlayStation 4 Camera
Not USB
The PlayStation Camera is a must-have for PSVR and PlayStation Move. It uses dual lens to track the players movment as well as the movement of those ice cream cone controllers. As for the camera itself, the 1280x800 resolution and 60 FPS is good enough for the average user.
Pro picture
Elgato HD60 S
Connecting to a USB cam
Elgato's external HD60 S is a great solution for a streamer wanting to upgrade without adding an internal card to your PC.  This connection means you can still use your USB webcam on your PC.
We may earn a commission for purchases using our links. Learn more.


- Important Blog on Attention
- Attention and Augmented RNNs (Distill)
- Transformer Implementation TF G-Colab
- A Guide to Attention Mechanisms and Memory Networks (skymind)
- Soft and Hard Attention
- Attention (WildML)
- A Critical Review of Neural Attention Models in Natural Language Processing
- Attention Mechanism(s) (d2l)
- Intuitive Understanding of Attention Mechanism in Deep Learning (medium + code)
- What is the rationale behind self-attention equation and how did they came up with the concept query, key and value? (Reddit!)
- Stanford CS224N: NLP with Deep Learning | Winter 2020 | BERT and Other Pre-trained Language Models - by Jacob Devlin (Lec!)
-
How to get meaning from text with language model BERT | AI Explained (Vid!!)
- All about attention in neural networks described as colab notebooks (Code!)
Introduction
-
Motivation:
In Vanilla Seq2Seq models, the only representation of the input is the fixed-dimensional vector representation \((y)\), that we need to carry through the entire decoding process.This presents a bottleneck in condensing all of the information of the entire input sequence into just one fixed-length vector representation.
-
Attention:
Attention is a mechanism that allows DNNs to focus on (view) certain local or global features of the input sequence as a whole or in part.Attention involves focus on certain parts of the input, while having a low-resolution view of the rest of the input – similar to human attention in vision/audio.
An Attention Unit considers all sub regions and contexts as its input and it outputs the weighted arithmetic mean of these regions.
The arithmetic mean is the inner product of actual values and their probabilities.
$$m_i = \tanh (x_iW_{x_i} + CW_C)$$
These probabilities are calculated using the context.
The Context \(C\) represents everything the RNN has outputted until now.The difference between using the hyperbolic tanh and a dot product is the granularity of the output regions of interest - tanh is more fine-grained with less choppy and smoother sub-regions chosen.
The probabilities are interpreted as corresponding to the relevance of the sub-region \(x_i\) given context \(C\).
- Types of Attention:
- Soft Attention: we consider different parts of different subregions
- Soft Attention is deterministic
- Hard Attention: we consider only one subregion
- Hard Attention is a stochastic process
- Hard Attention is a stochastic process
- Soft Attention: we consider different parts of different subregions
- Strategy:
- Encode each word in the sentence into a vector (representation)
- When decoding, perform a linear combination of these vectors, weighted by attention weights
- Use this combination in picking the next word (subregion)
- Calculating Attention:
An attention function can be described as mapping a query and a set of key-value pairs to an output, where the query, keys, values, and output are all vectors. The output is computed as a weighted sum of the values, where the weight assigned to each value is computed by a compatibility function of the query with the corresponding key.- Use query vector (decoder state) and key vectors (all encoder states)
- For each query-key pair, calculate weight
- Normalize to add to one using softmax
- Combine together value vectors (usually encoder states, like key vectors) by taking the weighted sum
- Use this in any part of the model
- Attention Score Functions:
\(q\) is the query, \(k\) is the key:- Multi-Layer Perceptron (Bahdanau et al. 2015):
- Flexible, often very good with large data
$$a(q,k) = w_2^T \tanh (W_1[q;k])$$
- Bilinear (luong et al. 2015):
- Not used widely in Seq2Seq models
- Results are inconsistent
$$a(q,k) = q^TWk$$
- Dot Product (luong et al. 2015):
- No parameters
- Requires the sizes to be the same
$$a(q,k) = q^Tk$$
- Scaled Dot Product (Vaswani et al. 2017):
- Solves the scale problem of the dot-product: the scale of the dot product increases as dimensions get larger
$$a(q,k) = \dfrac{q^Tk}{\sqrt{\vert k \vert}}$$
- Multi-Layer Perceptron (Bahdanau et al. 2015):
- What to Attend to?
- Input Sentence:
- A previous word for translation - Neural Machine Translation
- Copying Mechanism - Gu et al. 2016
- Lexicon bias Arthur et al. 2016
- Previously Generated Things:
- In language modeling: attend to the previous words - Merity et al. 2016
Attend to the previous words that you generated and decide whether to use them again (copy)
- In translation: attend to either input or previous output - Vaswani et al. 2017
- In language modeling: attend to the previous words - Merity et al. 2016
- Input Sentence:
- Modalities:
- Images (Xu et al. 2015)
- Speech (Chan et al. 2015)
- Hierarchical Structures (Yang et al. 2016):
- Encode with attention over each sentence then attention over each sentence in the document
- Multiple Sources:
- Attend to multiple sentences in different languages to be translated to one target language (Zoph et al. 2015)
- Attend to a sentence and an image (Huang et al. 2016)
-
Intra-Attention/Self-Attention:
Each element in the sentence attends to other elements – context sensitive encodings.It behaves similar to a Bi-LSTM in that it tries to encode information about the context (words around the current input) into the representation of the word.
It differs however:- Intra-Attention is much more direct, as it takes the context directly without being influenced by many steps inside the RNN
- It is much faster as it is only a dot/matrix product
- Improvement to Attention:
- The Coverage Problem: Neural models tend to drop or repeat content when tested on data not very similar to the training set
- Solution: Model how many times words have been covered
- Impose a penalty if attention is not \(\approx 1\) for each word (Cohn et al. 2015)
It forces the system to translate each word at least once. - Add embeddings indicating coverage (Mi.. et al. 2016)
- Incorporating Markov Properties (Cohn et al. 2015)
- Intuition: attention from last time tends to be correlated with attention this time
- Strategy: Add information about the last attention when making the next decision
- Bidirectional Training (Cohn et al. 2015):
- Intuition: Our attention should be roughly similar in forward and backward directions
- Method: Train so that we get a bonus based on the trace of the matrix product for training in both directions
\(\mathrm{Tr} (A_{X \rightarrow Y}A^T_{Y \rightarrow X})\)
- Supervised Training (Mi et al. 2016):
- Sometimes we can get “gold standard” alignments a-priori:
- Manual alignments
- Pre-trained with strong alignment model
- Train the model to match these strong alignments (bias the model)
- Sometimes we can get “gold standard” alignments a-priori:
- Impose a penalty if attention is not \(\approx 1\) for each word (Cohn et al. 2015)
- Attention is not Alignment (Koehn and Knowles 2017):
- Attention is often blurred
- Attention is often off by one:
Since the DNN has already seen parts of the information required to generate previous outputs, it might not need all of the information from the word that is actually matched with its current output.
Thus, even if Supervised training is used to increase alignment accuracy, the overall error rate of the task might not actually decrease.
Specialized Attention Varieties
- Hard Attention (Xu et al. 2015):
- Instead of a soft interpolation, make a Zero-One decision about where to attend (Xu et al. 2015)
- Harder to train - requires reinforcement learning methods
- It helps interpretability (Lei et al. 2016)
- Instead of a soft interpolation, make a Zero-One decision about where to attend (Xu et al. 2015)
- Monotonic Attention (Yu et al. 2016):
- In some cases, we might know the output will be the same order as the input:
- Speech Recognition
- Incremental Translation
- Morphological Inflection - sometimes
- Summarization - sometimes
- Hard decisions about whether to read more
- In some cases, we might know the output will be the same order as the input:
- Convolutional Attention (Allamanis et al. 2016):
- Intuition: we might want to be able to attend to “the word after ‘Mr.’”
- Intuition: we might want to be able to attend to “the word after ‘Mr.’”
- Multi-headed Attention:
- Idea: multiple attention heads focus on different parts of the sentence
- Different heads for “copy” vs regular (Allamanis et al. 2016)
- Multiple independently learned heads (Vaswani et al. 2017)
- Tips:
- Don’t use attention with very long sequences - especially those you want to summarize and process efficiently
- Fertility: we impose the following heuristic “It is bad to pay attention to the same subregion many times”
- Notes:
- Attention is a mean field approximation of sampling from a categorical distribution over source word embeddings (or the rnn state aligned with a source word, etc)
- Additive VS Multiplicative Attention:
Additive attention computes the compatibility function using a feed-forward network with a single hidden layer.
Multiplicative attention uses the dot-product.
While the two are similar in theoretical complexity, dot-product attention is much faster and more space-efficient in practice, since it can be implemented using highly optimized matrix multiplication code.
Representing Sentences: Solving the Vector Problem
-
The Problem: Conditioning with Vectors:
The Problem: We are compressing a lot of information into a finite-sized vector.
Moreover, gradients flow a very long time/distance; making, even, LSTMs forget.Sentences are of different sizes but vectors are of the same size; making the compression inherently, very lossy.
- The Solution: Representing Sentences as Matrices:
We represent a source sentence as a matrix, and generate the target sentence from a matrix:- Fixed number of rows, but number of columns depends on the number of words.
This will:
- Solve the capacity problem
- Solve the gradient flow problem
- How to build the Matrices?
- Concatenation:
- Each word type is represented by an n-dimensional vector.
- Take all the vectors for the sentence and concatenate them into a matrix
- This is the simplest possible model: that there are no published results on it…
- Convolutional Networks:
- Apply CNNs to transform the naive concatenated matrix to obtain a context-dependent matrix
- Remove the pooling layer at the end to ensure variable sized output
- BiRNNs:
- Most widely used in NMT (Bahdanau et al 2015)
- One column per word
- Each column (word) has two halves concatenated together:
- A “forward representation” (word and its LEFT context)
- A “reverse representation” (word and its RIGHT context)
- Concatenation:


PopOvers
javascript-popovers
Add small overlays of content, like those on the iPad, to any element for housing secondary information.
javascript-popovers
Add small overlays of content, like those on the iPad, to any element for housing secondary information.
Popovers whose both title and content are zero-length are never displayed.
Plugin dependency
Popovers require the tooltip plugin to be included in your version of Bootstrap.
Opt-in functionality
For performance reasons, the Tooltip and Popover data-apis are opt-in, meaning you must initialize them yourself.
One way to initialize all popovers on a page would be to select them by their
data-toggle
attribute:Popovers in button groups and input groups require special setting
When using popovers on elements within a
.btn-group
or an.input-group
, you'll have to specify the optioncontainer: 'body'
(documented below) to avoid unwanted side effects (such as the element growing wider and/or losing its rounded corners when the popover is triggered).Don't try to show popovers on hidden elements
Invoking
$(...).popover('show')
when the target element isdisplay: none;
will cause the popover to be incorrectly positioned.Popovers on disabled elements require wrapper elements
To add a popover to a
disabled
or.disabled
element, put the element inside of a

and apply the popover to that

instead.Multiple-line links
Sometimes you want to add a popover to a hyperlink that wraps multiple lines. The default behavior of the popover plugin is to center it horizontally and vertically. Add
white-space: nowrap;
to your anchors to avoid this.Examples
Static Popover
Four options are available: top, right, bottom, and left aligned.
Live Demo
Four Directions
Dismiss on next click
Use the
focus trigger
to dismiss popovers on the next click that the user makes.Specific markup required for dismiss-on-next-click
For proper cross-browser and cross-platform behavior, you must use the

tag, not the<button>
tag, and you also must include therole="button"
andtabindex
attributes.Usage
Enable popovers via JavaScript:
Options
Options can be passed via data attributes or JavaScript. For data attributes, append the option name to
data-
, as indata-animation=""
.Appends the popover to a specific element. Example:
container: 'body'
. This option is particularly useful in that it allows you to position the popover in the flow of the document near the triggering element - which will prevent the popover from floating away from the triggering element during a window resize.Default content value if
data-content
attribute isn't present.If a function is given, it will be called with its
this
reference set to the element that the popover is attached to.Delay showing and hiding the popover (ms) - does not apply to manual trigger type
If a number is supplied, delay is applied to both hide/show
Object structure is:
delay: { "show": 500, "hide": 100 }
text
method will be used to insert content into the DOM. Use text if you're worried about XSS attacks.How to position the popover - top | bottom | left | right | auto.
When "auto" is specified, it will dynamically reorient the popover. For example, if placement is "auto left", the popover will display to the left when possible, otherwise it will display right.
When a function is used to determine the placement, it is called with the popover DOM node as its first argument and the triggering element DOM node as its second. The
this
context is set to the popover instance.'

'
Base HTML to use when creating the popover.
The popover's
title
will be injected into the.popover-title
.The popover's
content
will be injected into the.popover-content
..arrow
will become the popover's arrow.The outermost wrapper element should have the
.popover
class.Default title value if
title
attribute isn't present.If a function is given, it will be called with its
this
reference set to the element that the popover is attached to.manual
cannot be combined with any other trigger.Keeps the popover within the bounds of this element. Example:
viewport: '#viewport'
or{ "selector": "#viewport", "padding": 0 }
If a function is given, it is called with the triggering element DOM node as its only argument. The
this
context is set to the popover instance.Data attributes for individual popovers
Options for individual popovers can alternatively be specified through the use of data attributes, as explained above.
Methods
$().popover(options)
Initializes popovers for an element collection..popover('show')
Reveals an element's popover. Returns to the caller before the popover has actually been shown (i.e. before theshown.bs.popover
event occurs). This is considered a "manual" triggering of the popover. Popovers whose both title and content are zero-length are never displayed..popover('hide')
Hides an element's popover. Returns to the caller before the popover has actually been hidden (i.e. before thehidden.bs.popover
event occurs). This is considered a "manual" triggering of the popover..popover('toggle')
Toggles an element's popover. Returns to the caller before the popover has actually been shown or hidden (i.e. before theshown.bs.popover
orhidden.bs.popover
event occurs). This is considered a "manual" triggering of the popover..popover('destroy')
Hides and destroys an element's popover. Popovers that use delegation (which are created using the selector option) cannot be individually destroyed on descendant trigger elements.Events
show
instance method is called.hide
instance method has been called.show.bs.popover
event when the popover template has been added to the DOM.