# Twister2 Worker Binding and Mapping in Kubernetes Ahmet Uyar
Worker binding is the process of binding workers to CPU cores. Bounded workers are prevented to be moved from one core to the other during their lifetimes. They finish the execution in the core that they are started.
Worker mapping is the process of assigning workers to nodes around the cluster. Some jobs may need to run in some specific machines. Some machines may have special hardware such as GPUs or fast SSD disks. Or some nodes may have special software. Therefore, some jobs may need to run on some specific machines. On the contrary, some jobs may want to NOT run on some machines. They may run in any machine but some of them. Worker mapping handles the distribution of workers to nodes in the cluster.
## Worker Binding Kubernetes allows binding of pods to CPU cores. It is called static binding. When a pod is started with static binding, that pod has exclusive ownership of the assigned core(s). Therefore, this pod is not moved to any other core during its lifetime.
When CPUs are requested for workers with static binding, CPUs per worker has to be an integer. When a pod is statically bounded to a core, it can not have fractional ownership of that core. It has to have the total access to the core. However, one worker (container) can have more than one cores, but not fractional cores. Kubernetes use [Linux CPUSETS](https://www.kernel.org/doc/Documentation/cgroup-v1/cpusets.txt) to implement exclusive binding of pods to cores.
### Configuration Parameters A boolean configuration parameter is added to the configuration files. If its value is set to “true”, static binding is performed. Otherwise, workers are not bounded to cores. They may be moved during their lifetimes to other cores. The configuration parameter is:
kubernetes.bind.worker.to.cpu
### Binding All Workers When worker binding is requested, all workers in that job is bound to their cores. There is no binding for only some workers in a Twister2 job. Either all workers are bounded or none.
### Binding Inefficiency Worker binding should be used with caution. Since only the assigned worker can use the cores, those cores may go idle sometimes and no other pods in the system can use them during their lifetime. Unnecessary use of worker binding may result in less than optimal utilization of computing resources.
## Worker to Nodes Mapping Kubernetes provides some mechanisms to map pods to nodes in a cluster. When submitting a job, users can request that worker pods to be started in nodes with some labels. Or they can request that pods not to be started in some nodes with some labels. In any case, pod assignment to nodes are handled by using labels.
In the first step, node labels are created for cluster machines. In the second step, users request their worker pods to be started based on those labels. Node labeling is performed by using kubectl command line tool. We assume that node labeling is performed prior to creating Twister2 jobs. The format of the label creation command is as follows:
>kubectl label nodes <node-name> <label-key>=<label-value>
Predefined Labels: There are also some predefined labels in Kubernetes for each node. Users can request mapping based on these labels also. Some of these labels are as follows: * kubernetes.io/hostname, * beta.kubernetes.io/os, * beta.kubernetes.io/arch.
The primary reason for requesting workers to be located in some nodes is that not all machine nodes in a cluster are the same. Some nodes might have different hardware such as faster disks, faster CPUs, or extra hardware such as GPUs, they might have extra installed software such as databases. These machines are first labeled for these features and then users submit the jobs for their workers to be scheduled on the requested nodes.
### Worker Mapping Implementation When requesting pod placement to nodes, users provide three types of data: * label-key * operator * label-values
There are currently six operators: * In, NotIn, Exists, DoesNotExist, Gt, Lt.
Two of the operators check for equality: * In and NotIn
Two of the operators check for the existence of the given labels in nodes (They don’t check the values of the keys): * Exists, DoesNotExist
Two of the operators check for numerical comparison: * Gt (greater than) and Lt (less than)
### Configuration Parameters In our Twister2 implementation, we allow users to specify these three parameters in configuration files. We have 4 configuration parameters. First one shows whether the user wants worker to nodes mapping. The other three determines the mapping parameters:
kubernetes.worker.to.node.mapping: true or false kubernetes.worker.mapping.key: “key” kubernetes.worker.mapping.operator: “op” kubernetes.worker.mapping.values: [‘list’ ‘of’ ‘values’]
### Example 1: Let’s assume that we have a cluster with 10 nodes. 4 of them have GPUs and they are labeled as “extra-hardware=gpu”. We want to start our workers in gpu installed nodes. Users specify the worker mapping parameters as:
kubernetes.worker.to.node.mapping: true kubernetes.worker.mapping.key: “extra-hardware” kubernetes.worker.mapping.operator: “In” kubernetes.worker.mapping.values: [‘gpu’]
This makes sure that the workers are started only in one of those 4 gpu installed nodes. Since values can have more than one value, it is given as a list of strings.
As another example, the user might want to start the workers in non-gpu installed nodes. In that case, configuration values will be:
kubernetes.worker.to.node.mapping: true kubernetes.worker.mapping.key: “extra-hardware” kubernetes.worker.mapping.operator: “NotIn” kubernetes.worker.mapping.values: [‘gpu’]
### Example 2: We can also use default keys when requesting worker mapping to nodes. Let’s use node name labels. Let’s assume that the nodes have names: node01, node02, node03, … , node9.
We can request that the workers to be placed in one of three nodes such as node03, node04, node05. In this case, the configuration settings would be:
kubernetes.worker.to.node.mapping: true kubernetes.worker.mapping.key: “kubernetes.io/hostname” kubernetes.worker.mapping.operator: “In” kubernetes.worker.mapping.values: [‘node03’, ‘node04’, ‘node05’]
Or we can request that the workers not to be placed in one of those nodes:
kubernetes.worker.to.node.mapping: true kubernetes.worker.mapping.key: “kubernetes.io/hostname” kubernetes.worker.mapping.operator: “NotIn” kubernetes.worker.mapping.values: [‘node03’, ‘node04’, ‘node05’]
### Limitations Currently users can set only one set of configuration parameters when submitting a job. The user can not requests worker placements based on more than one label key. However, Kubernetes supports that feature. This feature may be added to Twister2.
## Uniform Worker Mapping In addition to node affinity, Kubernetes also provides pod affinity mechanism. With this method, pods can be deployed with respect to the other pods running in the cluster. Instead of directly supporting this service, we implemented two specific cases of this service that distributes pods uniformly.
all-same-node: When uniform worker mapping is requested with “all-same-node” value, all pods in that job are placed into the same node. This does not say anything about the node to be deployed. All it requires that all pods belonging to this job will be started on the same node. It can be any node in the cluster or any node that is determined by node mapping settings.
all-separate-nodes: When uniform worker mapping is requested with “all-separate-nodes” value, all pods in that job are placed into separate nodes. Only one pod is placed into one node. If there are not enough nodes in the cluster, the job can not be started. However, this does not guarantee that only one worker will be running on each node, since there might be more than one worker in each pod. Pod placement applies to only pods but not directly to workers. If each pod runs only a single worker, then worker placement becomes equivalent to pod placement.
### Configuration Parameter Configuration parameter for uniform worker mapping is:
kubernetes.worker.mapping.uniform
Its value can be: “all-same-node”, “all-separate-nodes”, “none”
By default, its value is “none”.
## Using Worker Mapping and Binding Settings Together Worker mapping and uniform mapping can be used together. However, they should not conflict each other. They should complement each other.
For example, in the above cluster with 10 nodes and 4 of them having GPUs, one can specify both worker mapping and uniform mapping together. Let’s say, we want to run one pod on each GPU node. We can specify that workers to be started in GPU installed nodes only and they should be uniformly distributed with all-separate-nodes option. In this case, there can be at most 4 pods running in the job though. If we want to start more than 4 pods with the same settings, then the job can not be started.
Worker mapping and worker binding can be used together also. They do not conflict each other. However, there must be enough resources for worker binding.
## Future Works Pod affinity support can be improved. More cases can be added. For example, the pods of a job can be requested to run only with some other pods. Let’s assume that there are four pods running in the cluster for a database server, we can start one pod next to each database server. Or, we can say that our pods should not run in any node that is running this database pods.


Welcome to my homepage!
I am Robert Kwapich. I studied medical physics and obtained a Master’s degree from the University of Silesia in Katowice, Poland. I am currently working in the domain of bioinformatics and data-science as a Research Assistant in the US of A. I enjoy playing with machine learning and deep learning methods for data science in biology and medicine. Read more about me on the main page
The intent of this website is double-fold. I want to present some of my ideas, thoughts and inspirations to the world in the form of blog posts. They can range from cinema, paintings, music, philosophy to physics, biology, computer science and some branches of artificial intelligence. The second pillar of my website is to present my actual work and implemented ideas in code. They can serve as my portfolio, or as a reference for somebody interested. Each post has a comment box hosted on disqus.
I plan to publish every 6-8 weeks in several categories: blog, data-science and bioinformatics. Right now you can navigate to my first post about simple anomaly detection or to the main page and ‘about me’ tab.
Feel free to say hello in the comment!


| PostgreSQL 9.0.10 Documentation | ||||
|---|---|---|---|---|
| Prev | Up | Chapter 28. Monitoring Disk Usage | Next |
Each table has a primary heap disk file where most of the data is stored. If the table has any columns with potentially-wide values, there also might be a TOAST file associated with the table, which is used to store values too wide to fit comfortably in the main table (see Section 54.2). There will be one index on the TOAST table, if present. There also might be indexes associated with the base table. Each table and index is stored in a separate disk file — possibly more than one file, if the file would exceed one gigabyte. Naming conventions for these files are described in Section 54.1.
You can monitor disk space in three ways: using the SQL functions listed in Table 9-58, using the tools in contrib/oid2name, or using manual inspection of the system catalogs. The SQL functions are the easiest to use and are generally recommended. contrib/oid2name is described in Section F.19. The remainder of this section shows how to do it by inspection of the system catalogs.
Using psql on a recently vacuumed or analyzed database, you can issue queries to see the disk usage of any table:
SELECT pg_relation_filepath(oid), relpages FROM pg_class WHERE relname = 'customer'; pg_relation_filepath | relpages ----------------------+---------- base/16384/16806 | 60 (1 row)
Each page is typically 8 kilobytes. (Remember, relpages is only updated by VACUUM, ANALYZE, and a few DDL commands such as CREATE INDEX.) The file path name is of interest if you want to examine the table's disk file directly.
To show the space used by TOAST tables, use a query like the following:
SELECT relname, relpages FROM pg_class, (SELECT reltoastrelid FROM pg_class WHERE relname = 'customer') AS ss WHERE oid = ss.reltoastrelid OR oid = (SELECT reltoastidxid FROM pg_class WHERE oid = ss.reltoastrelid) ORDER BY relname; relname | relpages ----------------------+---------- pg_toast_16806 | 0 pg_toast_16806_index | 1
You can easily display index sizes, too:
SELECT c2.relname, c2.relpages FROM pg_class c, pg_class c2, pg_index i WHERE c.relname = 'customer' AND c.oid = i.indrelid AND c2.oid = i.indexrelid ORDER BY c2.relname; relname | relpages ----------------------+---------- customer_id_indexdex | 26
It is easy to find your largest tables and indexes using this information:
SELECT relname, relpages FROM pg_class ORDER BY relpages DESC; relname | relpages ----------------------+---------- bigtable | 3290 customer | 3144


This is my first website. I used Sketch to make the designs and Bootstrap for the CSS framework. I hadn't really done any programming before this so I hope you like it!


Outputs the object in a better way by hiding all the private methods/attributes.
the class to use
Helper to find if a given object is an array (or similar)
Special case signed little ints
converts a big int to a buffer
Generates a random long integer (8 bytes), which is optionally signed
.... really javascript
returns a positive bigInt
Generates a random bytes array
Calculate the key based on Telegram guidelines, specifying whether it's the client or not
Generates the key data corresponding to the given nonces
Calculates the SHA1 digest for the given data
Calculates the SHA256 digest for the given data
Fast mod pow for RSA calculation. a^b % n
Gets the arbitrary-length byte array corresponding to the given integer
Helper function to return the smaller big int in an array
returns a random int from min (inclusive) and max (inclusive)
Sleeps a specified amount of time
time in milliseconds
Generated using TypeDoc
converts a buffer to big int


If We Must Die - A poem By Claude Mckay
If we must die, let it not be like hogs
Hunted and penned in an inglorious spot,
While round us bark the mad and hungry dogs,
Making their mock at our accursèd lot.
If we must die, O let us nobly die,
So that our precious blood may not be shed
In vain; then even the monsters we defy
Shall be constrained to honor us though dead!
O kinsmen! we must meet the common foe!
Though far outnumbered let us show us brave,
And for their thousand blows deal one death-blow!
What though before us lies the open grave?
Like men we’ll face the murderous, cowardly pack,
Pressed to the wall, dying, but fighting back!
 The poem speaks to the experience of being black in America and the resilience and determination needed to survive in the face of oppression and violence.
In the first line, “If we must die, let it not be like hogs,” the speaker acknowledges that death may be inevitable, but they do not want to go down without a fight. They compare their situation to that of hogs, which are slaughtered without resistance or dignity.
In the next lines, “Hunted and penned in an inglorious spot, / While round us bark the mad and hungry dogs,” the speaker describes how they have been hunted and confined, treated with disrespect and without honor.
The fourth line, “Making their mock at our accursèd lot,” describes how their oppressors mock and ridicule their situation, treating them with contempt.
In the fifth line, “If we must die, O let us nobly die,” the speaker reaffirms their acceptance of death, but asserts that they will not go down without dignity and honor. They suggest that by fighting back, they can prevent their oppressors from shedding their blood, as they will not die in vain.
The seventh line, “But even the worms shall try to die,” compares their determination to that of even the lowest life forms, which will fight for survival.
In the ninth line, “We are the young men, who must die,” the speaker asserts that they are the ones who must bear the burden of fighting back and possibly dying in the process.
The eleventh line, “We know that we are sprung of the earth,” asserts their connection to the land and their place in the natural world.
In the final lines, “Like men we’ll face the murderous, cowardly pack, / Pressed to the wall, dying, but fighting back!,” the speaker reaffirms their determination to resist and fight back, even if it means risking their lives. They describe their oppressors as a murderous and cowardly pack and assert that they will face them with bravery and dignity, even if it means dying in the process.


The Discord bot on our server can fetch an XKCD by number or a random one.
You can try out the same functionality here, leaving the number-field blank for
a random one.
Our bot can check if you have an account that has been compromised in a data breach,
courtesy of Microsoft MVP Troy Hunt's HaveIBeenPwned. You can test it out here!


Ether Sunflowers
Welcome to Ether Sunflowers!
Instructions:
1. Please choose your account first.
2. Make sure you have enough suns
When you don't have any suns, you can click "getFreeSuns" to get 10 suns, which you can check it out by getSunsBalance.
You can buy suns with your ETH. (1 ETH can buy 1 sun)
3. Click getSunflowersBySuns, 1 sunflower requires 10 suns.
4. Now you have sunflowers, click "work", you will get 20*(sunflowersNum) suns, and the sunflowers are gone.
5. If you quit, then failAmount++. If you rest, then successAmount++.
6. You can sell all your suns by clicking "sellSuns" if the contract have enough ETH.
You can donate to the contract. Have fun!


Hi,
I've got a working system and a spare RFM12Pi board which I've never tried to use.
When I power on the Pi, the green LED on the spare RFM12Pi lights up solid and minicom doesn't observe any traffic - works fine when I substitute the original RFM12Pi though.
I've successfully followed the wiki instructions for re-uploading to the RFM12Pi after a bit of a false start. However, the fact that the LED is lit solid doesn't seem promising to me.
Does anyone have any suggestions for troubleshooting this? I'd like to give the spare Pi and RFM12Pi away as a Chrismas gift, but I won't be thanked if it doesn't work ;-)
I don't have whatever is needed to re-flash the bootloader as far as I can tell (and the fact that the upload seems to work implies the bootloader is OK?)
thanks,
Re: Troubleshooting RFM12Pi
Hi Dave
Do you know if it is software or hardware holding the led on? if there are no clues (flashing, delay or any sign of control etc) you may need to change the "ledpin" in the RF12demo and reload to establish this.
Which model is it? is it a standard v2 with an rfm12 ? and which firmware are loading ?
Why did you decide to change firmware was it doing exactly the same before or is it just since upload ?
Paul
Re: Troubleshooting RFM12Pi
Hey Paul,
I just tried uploading as a possible fix as I'd never used the board before. It has Feb 2013 stamped on it the same as my other RFM12Pi board from memory - I don't have them handy to compare right now. The green light comes on with the USB power to the Pi and stays on.
I hadn't really considered changing the sketch but I suppose another option would be to upload one causing it to transmit when powered up (I'd then receive that on my "production" Pi)?


By @astronomyblog & @LoveGraphs. Stats last updated 18 February 2017.
It seems there may have been at least 18 shows and 126 listed appearances. With 7 people per show, Wikipedia has all appearances listed. The host/captains/regulars have included Matt Edmondson (Host × 18), Joe Swash (Team Captain × 18), Ellie Taylor (Team Captain × 18).
Total appearances:
Guest appearances i.e. ignoring the host/captains/regulars:
All people:
Guests i.e. ignoring the host/captains/regulars:
Last updated: 2017/02/18


Welcome to Aero Space Engineering Lab
Introduction
Welcome to the aerospace engineering lab.
List of experiments
Target Audience
Has to be updated by lab developer.
Courses Aligned
Has to be updated by lab developer.
Pre-requisites S/W
- Apache2
- Php5
Feedback


Born This Way
Challenge Caster Semenya is a female South African Olympic and World Championship Gold medalist in track who has faced judgement and discrimination since she came into the spotlight as a dominant world-class athlete.
Challenge Caster Semenya is a female South African Olympic and World Championship Gold medalist in track who has faced judgement and discrimination since she came into the spotlight as a dominant world-class athlete.
Inspiration Degree Deodorant – makers of the world’s #1 antiperspirant – are committed to inspiring confidence in everyone to be active and move more. Degree believes no one should be held back from breaking a sweat and enjoying the transformative benefits of movement.
Idea Degree Inclusive is the world’s first inclusive deodorant built with people with visual impairment and upper extremity impairment, co-created by an inclusive team of design experts from Wunderman Thompson and SOUR, including occupational therapists, engineers, consultants, and people living with disabilities across the globe.
Growth Nature’s call for help spread far and wide around the world, raising awareness about the seriousness and impact of the problem for our planet and generating passionate public debate. The campaign is still on air and being shared across all the World Wildlife Fund network of countries.


List of testing files for
WCAG
3 conformance
Standalone login form
Standalone registration form
Standalone forgotten password form
Standalone contact us page


Updating to 5.5.2
To exploit your Wii U, we'll be using some software called Haxchi. This unforunately is only installable on versions 5.5.1 and 5.5.2. Luckily, 5.5.2 is the latest version, so we can easily just update through System Settings
Instructions
- Open System Settings from the Home Menu
- Scroll right and then select System Update
- Update your system
- Make sure you have update blocking disabled


Note that the text that appears is completely unrelated to the text that appears using put. Font.Draw is a graphics command and thus does not use or affect the cursor location.
The text drawn by the Font.Draw procedure does not erase the background.
var font1, font2, font3, font4 : int
font1 := Font.New ("serif:12")
assert font1 > 0
font2 := Font.New ("sans serif:18:bold")
assert font2 > 0
font3 := Font.New ("mono:9")
assert font3 > 0
font4 := Font.New ("Palatino:24:bold,italic")
assert font4 > 0
Font.Draw ("This is in a serif font", 50, 30, font1, red)
Font.Draw ("This is in a sans serif font", 50, 80, font2, brightblue)
Font.Draw ("This is in a mono font", 50, 130, font3, colorfg)
Font.Draw ("This is in Palatino (if available)", 50, 180, font4, green)
Font.Free (font1)
Font.Free (font2)
Font.Free (font3)
Font.Free (font4)
Font.Draw ("Drawing Here", 100, 120, defFontID, brightred)
Font.Draw ("and Here", 180, 90, defFontID, brightgreen)
This means that you can only call the function by calling Font.Draw, not by calling Draw.


Enable or disable between the available range of categories
Enable or disable visibility of advertisement across the application


"LAPPING "of water like a dog, i.e., by putting the hand filled with water to the mouth. The dog drinks by shaping the end of his long thin tongue into the form of a spoon, thus rapidly lifting up water, which he throws into his mouth. The three hundred men that went with Gideon thus employed their hands and lapped the water out of their hands (Judges 7:7).
"LAPPING "of water like a dog, i.e., by putting the hand filled with water to the mouth. The dog drinks by shaping the end of his long thin tongue into the form of a spoon, thus rapidly lifting up water, which he throws into his mouth. The three hundred men that went with Gideon thus employed their hands and lapped the water out of their hands (Judges 7:7).


@* * Copyright 2020 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import config.FrontendAppConfig @import uk.gov.hmrc.play.views.html._ @import views.html._ @import controllers.routes._ @import models.Mode @import viewmodels.{AssociatedPsa, Message} @import models.Link @this( main_template: main_template, appConfig: FrontendAppConfig ) @( schemeName: String, pstr: Option[String], openedDate: Option[String], admins: Option[Seq[AssociatedPsa]], srn: String, isSchemeOpen: Boolean, displayChangeLink: Boolean, lockingPsa: Option[String], aftHtml: Html )(implicit request: Request[_], messages: Messages) @main_template( title = messages("messages__schemeDetails__title"), bodyClasses = None) { @components.back_link() @components.heading(schemeName) @pstr.map {pstr =>
@messages("messages__schemeDetails__pstr", pstr)
} @lockingPsa.map {psaName =>@messages("messages__schemeDetails__psa_making_changes", psaName)
} @openedDate.map { openedDate =>@openedDate
} @aftHtml @admins.map { admins =>@messages("messages__schemeDetails__invite_link")
@messages("messages__schemeDetails__invite_p1")
} }


Vinnie Jones says he still speaks to late wife Tanya ‘every day’
Tanya was 53 when she died in July following a years-long battle with cancer.
Vinnie Jones has said he speaks to his late wife every day as he comes to terms with her death.
Tanya Jones, the footballer-turned-actor’s wife of 25 years, was 53 when she died in July following a years-long battle with cancer.
In an interview with The Sun, Jones, who is taking part in The X Factor: Celebrity in order to pay tribute to Tanya, revealed how he copes with her loss.
He told the newspaper: “I talk to her all of the time. Constantly, every day.
“We have a little chat when I’m making my bed. This morning I went, ‘There you go babe, look’, and it wasn’t my best bed making, so I re-did it.”
Tanya died at the family home in July after being diagnosed with melanoma, the most serious form of skin cancer, in 2013.
Jones had also been diagnosed with the illness but later got the all-clear.
Following his wife’s death, Jones has sold their LA home, saying it would be too difficult to live there without Tanya.
He has now bought the property next door, where 32-year-old Kayley, Tanya’s daughter from a previous relationship, lives.
Jones, who famously had a reputation as a hard man while playing for Wimbledon during his football career, also revealed Tanya’s dog had recently died.
 “Kayley phoned me at 3am to tell me.
“That dog never left her side. He was about 10. But we take a positive view — he’s with Tanya now. It’s incredible how he died so close to her.”


Like other Ink components, our navigation elements have an easy and intuitive implementation and their structure is a combination of simple and semantic markup with natural language class naming.
We have five types of navigation elements that are:
menu
A simple menu bar for basic navigation, with horizontal and vertical layouts and sub menus.
breadcrumbs
Breadcrumb type navigation, for when your interfaces require contextual navigation.
pagination
Pagination type navigation, for when you need to split your content intro smaller chunks.
pills
Pill type navigation. Pills are essentially the same as menu navigation but look like single "buttons".
dropdowns
Dropdown menu type navigation. Very similar to what you'd find in your operative system.
| Class name | Description |
|---|---|
ink-navigation |
The navigation root class. |
menu breadcrumbs pagination pills
dropdown
|
Defines the type of navigation. |
white grey black blue green orange red
|
Defines the navigation theme color. |
All of the navigation elements have the same basic structure:
Structure
{% highlight html %} {% endhighlight %}Pagination type navigation is created by using the pagination
CSS class in the

element, and by default has a button bar presentation:
Code
{% highlight html %} {% endhighlight %}Demo
To get a dotted style of pagination, add the dotted
CSS class to the

element:
Code
{% highlight html %} {% endhighlight %}Demo
To get a chevron style of pagination, add the chevron
CSS class to the

element:
Code
{% highlight html %} {% endhighlight %}Demo
Pills type navigation is created by using the pills
CSS class in the

element, and by default has a button bar presentation:
Code
{% highlight html %} {% endhighlight %}Demo
Dropdowns use the same base structure as the other navigation types, but have a few extra classes to handle its higher complexity. Adding the dropdown
CSS class to the top

element will set the basic styling and behaviour of the dropdown menu.
Code
{% highlight html %} {% endhighlight %}Demo
If you need to organize your menu items into groups, use either the separator-above
or separator-below
, to create a separating line:
Code
{% highlight html %} {% endhighlight %}Demo
Menu section headings are also available:
Code
{% highlight html %} {% endhighlight %}Demo
Submenus are created by adding the submenu
class to one of your menu items and creating another dropdown within it:
Code
{% highlight html %} {% endhighlight %}Demo
Submenus can be nested to create multiple sub level complex menu structures.
As in other components you can set the state of a menu item with the active
or disabled
classes, and use our navigation themes:
Code
{% highlight html %} {% endhighlight %}Demo


This is a Javascript quiz which contain Ten questions. please chose one question before doing the next. the each question has 2 point
click here to start the quiz. All the best and Good-Luck Click here to start Quiz


Despite the first videogames were invented in the 50's, the 70's is the decade of its commercial boom. Atari, Sega, Taito are names of companies that became popular in the 70's with their games. They are no longer leading the industry, nevertheless their games a tribute of cult.
Nowadays the videogame industry takes the entertainment beyond the game. The Internet promoted the dissemination of online games, gamers communities and interactivity with the user. More than just sit & play.
Virtual reality (VR) is a realistic simulation of user's presence in a 3D environment, created using interactive software and hardware, controlled by movement of the body and enabling the user to interact with space, objects, sounds and other sensations replicated therein. Today is believed it will be the future.
Black & White screen and monophonic sounds.
Add colour, multiple stages and stereo!
A game can be played at the same time by many players located in any place in the world.
The line between life and game becomes thinner!


Class: Rhohub::App
Class Method Summary (collapse)
- + (Object) create(data)
-
+ (Object) delete(options)
options = => app_id.
- + (Object) list
-
+ (Object) show(options)
options = => app_id.
Methods inherited from Base
catch_all, check, login, platforms, supported_gems, user_status
Class Method Details
+ (Object) create(data)
3 4 5 6 7 8 |
# File 'rhohub/app.rb', line 3 def self.create(data) catch_all do raise Exception.new "name must be passed to create ex: {app=>{:name => appname}}" unless data[:app][:name] super({},data,"apps") end end |
+ (Object) delete(options)
options = => app_id
11 12 13 14 15 16 |
# File 'rhohub/app.rb', line 11 def self.delete() catch_all do raise Exception.new "app_id must be passed to show ex: {:app_id => app_id}" unless [:app_id] super(,"apps") end end |
+ (Object) list
18 19 20 21 22 |
# File 'rhohub/app.rb', line 18 def self.list catch_all do super({},"apps") end end |
+ (Object) show(options)
options = => app_id
25 26 27 28 29 30 |
# File 'rhohub/app.rb', line 25 def self.show() catch_all do raise Exception.new "app_id must be passed to show ex: {:app_id => app_id}" unless [:app_id] super(,"apps") end end |


Aggregate of 8.08 with good understanding of Software engineering
Aggregate of 68.2%, Subject: Maths, Physics, Chemistry, English, Painting
Aggregate of 10 CGPA (95%)
*Rhaynel managed Alok directly
Professionals are persons that profess their skill to others and vow to
perform their craft to the highest known standard. That is the way Alok behaves every
day with such a passion for what he does and pushing himself to be always a better
software developer and a better person. it is a real pleasure to work with him.
Connect with Rhaynel here
*Mihir and Alok did college together
Alok is a punctal, talented, passionate but what makes him ideal for any
role is hardwork.  He is
known to be detail oriented and for quickly grasping working knowledge of anything.
If you want anyone who can pursue any responsibility and can perfectly rely on him
choose this person as priority. He will get it done in the best way that's for sure.
Connect with Mihir here
*Udit and Alok worked together at TCS
Alok is one of the most passionate JS developers.
I have worked with him for more than a year and I can vow for his skills, his dedication
and his capability of finishing a project. He takes the ownership of the project and
makes sure, it is delivered at the right time with all the best industrial practices and
standards.
Connect with Udit here
*Raunak managed Alok directly
Alok Raj has been a real pleasure to work with. Alok Raj did an exceptional job on projects that we worked together on. Passionate, great and creative co-worker. Detail oriented, intelligent, deadline oriented and broad-minded employee; has vast knowledge and is thorough. Thanks to interpersonal skills, Alok Raj has great relations with both company clients and potential customers. Is able to work in a fast-paced environment. Highly recommended
*Avinash managed Alok directly
Alok Raj is a very professional and amazing full stack developer.
Connect with Avinash here
*Ayush worked with Alok at diff comp.
Alok is a great professional developer. He always comes up with creative
solutions to difficult problems. He has excellent communication skills and is willing to
help when needed. Anyone would be lucky to have Alok has a colleague.
Connect with Ayush here
*Vishal worked with Alok at diff comp.
Alok Raj is such a nice person to have around. He is not only a great
colleague but also a very good javascript developer with over 3 years of valuable
experience.
He is very creative, hands-on, and organized. He is the guy to go to when you need help
with javascript or any another programming related issue and is always open to discuss
ideas and suggestions.
I learned a lot about leadership from Alok Raj, and it was a pleasure to be managed by
him.
Connect with Vishal here


COVID-19
Home
(current)
Country
Action
Another action
Something else here
Statistics
Last Update:
2021-01-18 17:26:01
Total Cases
94M
Total Deaths
2M
New Cases
144K
Total Recovered
93M
New Recovered
999
New Deaths
10K
serial
Country
Cases
new Cases
deaths
Recovered
Row 1 Data 1
Row 1 Data 2
Row 1 Data 2
Row 1 Data 1
Row 1 Data 2
Row 1 Data 2
Row 2 Data 1
Row 2 Data 2
Row 1 Data 2
Row 1 Data 1
Row 1 Data 2
Row 1 Data 2


Chapter 4 Logical Statements
4.1 Key Concepts
Logical statements are used to translate regular language into computer code. Many of our data analysis problems start by defining our sub-groups of interest.
What percentage of men over 30 are bald?
Do bearded men earn more than men without beards?
We need to make sure statements are correct. For example, the complement of “men with beards” is not men without beards, it is men without beards OR women (with or without beards).
4.2 Operators
Logical operators are the most basic type of data programming and the core of many types of data analysis. Most of the time we are not conducting fancy statistics, we just want to identify members of a group (print all of the females from the study), or describe things that belong to a subset of the data (compare the average price of houses with garages to houses without garages).
In order to accomplish these simple tasks we need to use logic statements. A logic statement answers the question, does an observation belong to a group.
Many times groups are simple. Show me all of the professions that make over $100k a year, for example.
Sometimes groups are complex. Identify the African American children from a specific zip code in Chicago that live in households with single mothers.
You will use nine basic logical operators:
| Operator | Description |
|---|---|
| < | less than |
| <= | less than or equal to |
| > | greater than |
| >= | greater than or equal to |
| == | exactly equal to |
| != | not equal to |
| x | y | x OR y |
| x & y | x AND y |
| ! | opposite of |
| [ ] | subset |
Logical operators create logical vectors, a vector that contains only TRUE or FALSE. The TRUE means that the observation belongs to the group, FALSE means it does not.
x1 <- c( 7, 9, 1, 2 )
x1 > 7
### [1] FALSE TRUE FALSE FALSE
x1 >= 7
### [1] TRUE TRUE FALSE FALSE
x1 == 9 | x1 == 1
### [1] FALSE TRUE TRUE FALSE
gender <- c("male","male","female","female")
gender == "female"
### [1] FALSE FALSE TRUE TRUE
Note that the logical statement for “equals” is written with two equal signs. This is important to remember, because using a single equal sign can introduce subtle errors into your analysis.
x1 <- c( 7, 9, 1, 2 )
x1 == 9
### [1] FALSE TRUE FALSE FALSE
x1 = 9 # don't use a single equals operator! it overwrites your variable
x1
### [1] 9
We can write compound logical statements using the AND and OR operators:
4.3 Selector Vectors
Note that we use operators to create logical vectors where TRUE designates observation that belong to the defined group, and FALSE designates observations outside the group.
The term “selector vector” is a useful way to remember this purpose. After you have defined a group by composing a logical statement, then the vector can be used to count group members and take subsets of other variables to calculate group statistics.
| name | gender | group | strength |
|---|---|---|---|
| frank | male | treat | 27 |
| wanda | female | treat | 43 |
| sanjay | male | control | 19 |
| nancy | female | control | 58 |
these.female <- dat$gender == "female"
sum( these.female ) # number of women in the study
### [1] 2
mean( these.female ) # proportion of the study that is women
### [1] 0.5
dat[ these.female , ] # all data belonging to women
### name gender group strength
### 2 wanda female treat 43
### 4 nancy female control 58
mean( dat$strength[ these.female ] ) # average outcome for women in the study
### [1] 50.5
I will consistently name my logical vectors “these.GROUP” throughout the chapters, where GROUP represents the group label. For example, I selected women above, so the selector vector is called “these.female”.
4.4 Usefulness of Selector Vectors
Selector vectors, i.e. logical vectors that were created by defining a group, have three main uses in our analysis.
ONE: Logical vectors give us an easy way to count things within defined groups.
We can apply a sum() function to a logical vector, and the result will be a tally of all of the TRUE cases. The mean() function will give us the proportion of the sample that belongs to our defined group.
# how many females do we have in our study?
sum( gender == "female" )
### [1] 2
# how many females do we have in our treatment group?
sum( gender == "female" & study.group == "treatment" )
### [1] 0
# what proportion of our study are men?
mean( gender == "male" )
### [1] 0.5
TWO: We can create a selector variable that is used for subsets. A selector vector used in a subset operator will drop all observations that are FALSE, isolating data belonging to the group:
these.female <- gender == "female"
name[ these.female ]
### [1] "wanda" "nancy"
strength[ these.female ]
### [1] 43 58
Or we can create a subset of the full dataset:
| name | gender | group | strength | |
|---|---|---|---|---|
| 2 | wanda | female | treat | 43 |
| 4 | nancy | female | control | 58 |
THREE: We use selector variables to replace observations with new values using the assignment operator. This is similar to a find and replace operation.
animals <- c( "mole", "mouse", "shrew", "mouse", "rat", "shrew" )
# the lab assistant incorrectly identified the shrews
animals
### [1] "mole" "mouse" "shrew" "mouse" "rat" "shrew"
animals[ animals == "shrew" ] <- "possum"
animals
### [1] "mole" "mouse" "possum" "mouse" "rat" "possum"
We don’t know if linda received the treatment:
| name | study.group |
|---|---|
| adam | treatment |
| jamal | control |
| linda | treatment |
| sriti | control |
The ! operator is a special case, where it is not used to define a new logical vector, but rather it swaps the values of an existing logical vector.
4.5 Compound Logical Statements
We can combine multiple logical statements using the AND, OR, and NOT operators ( &, |, ! ). This functionality gives us an incredible ability to specify very granular groups within our analysis. This will be important as we begin to construct analysis in a way that we search for apples to apples comparisons within our data in order to make inferences about program effectiveness.
These statements require some precision, however. Use care when applying that AND, OR, and NOT operators as to not include unintended data in your sample. In the example above, the statement “NOT bearded men” does not mean men without beards. It means all people outside of the category of men without beards (the “complement”), which includes women with or without beards as well.
! ( gender == "male" & beard == TRUE )
Also note that parentheses matter. Compare this statement to the statement above:
! gender == "male" & beard == TRUE
Because we excluded the parentheses this statement now defines the group “NOT men AND with beards”, or bearded women.
4.6 NAs in Logical Statements
Recall that missing values are an extremely important concept in statistics. If one-third of our survey sample reports that they never smoked pot, one-third reports they have smoked pot, and one-third did not answer the question, then what do we report for the proportion of the population that has smoked pot?
We might prefer to be cautious and count only the people that have confirmed they have smoked pot, resulting in an estimate of 33.3%.
If we throw out the missing data, then 50% of respondents have smoked pot.
If we assume those that refuse to answer have likely smoked pot, our estimate might be 66.6% of the sample.
These different results are a function of how we treat the missing data in our survey, so it is important that we can keep track of missing values, especially during subset operations.
Note how NAs effect compound logical statements:
To make sense of these rules consider the following:
If one condition is already FALSE, the missing value does not matter because under the & condition BOTH must be TRUE for the observation to belong to our defined group. After we know that one of the conditions is FALSE the missing value is irrelevant. For example, if we want to select all women in the treatment group, and we have a man with an unclear treatment group status, he is still excluded from the group because he is a man.
On the other hand, if one condition is TRUE, and another is NA, R does not want to throw out the data because the state of the missing value is unclear. As a result, it will preserve the observation, but it will replace all of the data with missing values to signal the lack of certainty associated with that observation.
| name | gender | group | strength |
|---|---|---|---|
| frank | male | treat | 27 |
| wanda | female | treat | 43 |
| sanjay | male | control | 19 |
| nancy | female | control | 58 |
keep.these <- c(T,F,NA,F)
dat[ keep.these , ]
### name gender group strength
### 1 frank male treat 27
### NA <NA> <NA> <NA> NA
To remove these rows with missing values in your selector vector, replace all NAs with FALSE:
4.7 Subsets
The subset operators [ ] are one of the most common you will use in R.
The primary rule of subsets is to use a data operator to create a logical selector vector, and use that to generate subsets. Any observation that corresponds to TRUE will be retained, any observation that corresponds to FALSE will be dropped.
For vectors, you need to specify a single dimension.
| name | gender | group | strength |
|---|---|---|---|
| frank | male | treat | 27 |
| wanda | female | treat | 43 |
| sanjay | male | control | 19 |
| nancy | female | control | 58 |
these.treat <- dat$group == "treat"
name[ these.treat ]
### [1] "frank" "wanda"
strength[ these.treat ]
### [1] 27 43
For data frames, you need two dimensions (rows and columns). The two dimensions are seperated by a comma, and if you leave one blank you will not drop anything.
dat[ row position , column position ]
these.control <- dat$group == "control"
dat[ these.control , ] # all data in the control group
### name gender group strength
### 3 sanjay male control 19
### 4 nancy female control 58
dat[ , c("name","gender") ] # select two columns of data
### name gender
### 1 frank male
### 2 wanda female
### 3 sanjay male
### 4 nancy female
# to keep a subset as a separate dataset
dat.women <- dat[ dat$gender == "female" , ]
dat.women
### name gender group strength
### 2 wanda female treat 43
### 4 nancy female control 58
Note the rules listed above about subsetting factors. After applying a subset, they will retain all of the original levels, even when they are not longer useful. You need to drop the unused levels if you would like them to be omitted from functions that use the factor levels for analysis.
df <- data.frame( letters=LETTERS[1:5], numbers=seq(1:5) )
levels( df$letters )
### [1] "A" "B" "C" "D" "E"
sub.df <- df[ 1:3, ]
sub.df$letters
### [1] A B C
### Levels: A B C D E
levels( sub.df$letters )
### [1] "A" "B" "C" "D" "E"
droplevels( sub.df$letters )
### [1] A B C
### Levels: A B C
sub.df$letters <- droplevels( sub.df$letters )


{% include header.html %}
Redirecting…
Click here if you are not being redirected.
{% include footer.html %}


Show Stats Restart Achievements Report Bug Settings
This game requires JavaScript; please enable JavaScript and refresh this page.


Shushu Chen
Home
Resume/CV
On My Desk
Photography
Contacts
Uyuni Salt Lake
Bolivia
La Paz
Bolivia
Cusco
Peru
Machu Picchu
Peru
Titicaca
Peru
Lima
Peru
New Orleans
United States
Lima
Peru
More photos?
Follow my instagram
or visit


Michael Bostick
Date of Birth
2/22/83
Sex
Male
Age
35
Status
Single
Ethnicity
African American
Japanese
Italian
Heart Rate
80BPM
10% increase
Blood Pressure
120/80
5% decrease
Height
5ft. 6in.
no change
Weight
155lbs
8% decrease
BMI
18.5
10% increase
Spo2
99%
no change
Specialist
Date
Time
Status
Dr. Crusher
Internal Medicine
6/29/21
9:00am
upcoming
Dr. Pulaski
Internal Medicine
8/18/21
11:00am
cancelled
Dr. Pulaski
Internal Medicine
8/18/21
11:00am
cancelled
Tylenol
500mg
Two pills as needed for pain.
Not to Exceed 8 pills a day
Aspirin
500mg
Two pills as needed for pain.
Not to Exceed 8 pills a day
Vitamin C
1000mg
One pill daily with food
Doctor
Location
Date
Results
Dr. Adrian Ui
San Jose General Hospital
6/29/2021
Dr. Handsome
Haight Street Clinic
6/19/2021
Dr. Handsome
Haight Street Clinic
6/19/2021


3 Loops and Conditionals
In this section we will get to grips with a key control feature of programming - looping. Looping at its simplest is just doing things over and over again until you have some reason to stop. Loops are a way of making the computer really work for you.
A loop is a code construct that contains code. Think of it as a box of code that gets run over and over. In Scratch the graphical metaphor is very simple, you have a block with a mouth, inside that mouth is the loop code, everything in the mouth gets repeated for as long as the loop definition says to. The loop definition is the the bit of writing at the top of the mouth.
These things make a lot more sense when you see them in use. Let’s examine some loops by building some that make music!
So that’s the basic idea, loops do stuff over and over. They can do set numbers of repeats, keep going forever or keep going until something else happens.
3.1 Fixing some bugs
Let’s have a look at some code with loops, some of which needs fixing.
3.2 Types of loop blocks
Mostly here we’ve seen the repeat
loop block, thats the most obvious sort but there are plenty of variations.
until
loop blocks do some code until something happens, that something can be specified by a e.g a sprite hits the side, or a number gets too big.while
loop blocks do some code while some thing is still in some state,forever
loop blocks do some code forever - this is more common than you think, especially in games for example. With these the main block of code just goes forever and stops only when something exceptional happens, like lives reaching0
.
3.3 Conditionals
Along the way we’ve already seen a different type of control block - a conditional. This is a block that contains code that will only be done if something specified by the programmer is true. You’ll notice this block because it begins with if
and then there’s some thing that must be tested to see if its true, this is the actual condition to be tested.
You can see the place for the condition in this picture as a gap after the word if
, that gap is waiting for the programmer to drop in any sort of thing to test.
A conditional (or simply just an if
block) is the easiest way to get a computer program make a decision and only do something in certain cases. They are abundant throughout computer programming.
In the upper form the code in the ‘mouth’ will only be run if the conditional test passes. If it doesn’t pass the test none of that code will be run. The rest of the program will carry on as if that code wasn’t even there.
The if-else
form provides a way to be explicit about what to do if the condition doesn’t pass. If the condition for if
doesn’t pass, then the code in the else
block runs. Note that the two blocks are mutually exclusive, if one block runs, the other won’t.
3.4 A creative project
It’s time to put some of our skills and creativity to use and build something brand new. For this next section we will build something personalised and/or exciting. Choose one of the activities below and enjoy building something you like!
3.5 In this section we…
Or an alter-ego you’ve constructed for the purposes of this exercise!↩


{% extends "base.html" %} {% load static %} {% block main %} Category Cars and Bikes Home and Decoration Mobiles and Tablets Home Appliances Fashion Books Sports and Fitness Toys and Kids' Accessories Laptops And PCs Thank You {{message}} {% endblock %}
{{message}}


An immutable 2D floating-point offset.
An Offset represents a vector from an unspecified Point.
Adding an offset to a Point returns the Point that is indicated by the vector from that first point.
- Inheritance
- Object
- OffsetBase
- Offset
Constants
Static Methods
Constructors
Properties
- distance → double
-
The magnitude of the offset.
read-only - distanceSquared → double
-
The square of the magnitude of the offset.
read-only - dx → double
-
The x component of the offset.
read-only - dy → double
-
The y component of the offset.
read-only - hashCode → int
-
read-only, inherited
- isInfinite → bool
-
Returns true if either dimension is
double.INFINITY
, and false if both are finite (or negative infinity, or NaN).read-only, inherited - runtimeType → Type
-
A representation of the runtime type of the object.
read-only, inherited
Operators
-
operator %(
double operand) → Offset -
Modulo (remainder) operator. Returns an offset whose coordinates are the remainder of dividing the coordinates of the left-hand-side operand (an Offset) by the scalar right-hand-side operand (a double).
-
operator &(
Size other) → Rect -
Rectangle constructor operator. Combines an offset and a Size to form a Rect whose top-left coordinate is the point given by adding this offset, the left-hand-side operand, to the origin, and whose size is the right-hand-side operand.
-
operator *(
double operand) → Offset -
Multiplication operator. Returns an offset whose coordinates are the coordinates of the left-hand-side operand (an Offset) multiplied by the scalar right-hand-side operand (a double).
-
operator +(
Offset other) → Offset -
Binary addition operator. Returns an offset whose dx value is the sum of the dx values of the two operands, and whose dy value is the sum of the dy values of the two operands.
-
operator -(
Offset other) → Offset -
Binary subtraction operator.  Returns an offset whose coordinates are the coordinates of the left-hand-side operand (an Offset) divided by the scalar right-hand-side operand (a double).
-
operator <(
OffsetBase other) → bool -
Less-than operator. Compares an Offset or Size to another Offset or Size, and returns true if both the horizontal and vertical values of the left-hand-side operand are smaller than the horizontal and vertical values of the right-hand-side operand respectively. Returns false otherwise.
inherited -
operator <=(
OffsetBase other) → bool -
Less-than-or-equal-to operator. Compares an Offset or Size to another Offset or Size, and returns true if both the horizontal and vertical values of the left-hand-side operand are smaller than or equal to the horizontal and vertical values of the right-hand-side operand respectively. Returns false otherwise.
inherited -
operator ==(
other) → bool -
Compares two Offsets for equality.
-
operator >(
OffsetBase other) → bool -
Greater-than operator. Compares an Offset or Size to another Offset or Size, and returns true if both the horizontal and vertical values of the left-hand-side operand are bigger than the horizontal and vertical values of the right-hand-side operand respectively. Returns false otherwise.
inherited -
operator >=(
OffsetBase other) → bool -
Greater-than-or-equal-to operator. Compares an Offset or Size to another Offset or Size, and returns true if both the horizontal and vertical values of the left-hand-side operand are bigger than or equal to the horizontal and vertical values of the right-hand-side operand respectively. Returns false otherwise.
inherited -
operator unary-(
) → Offset -
Unary negation operator. Returns an offset with the coordinates negated.
-
operator ~/(
double operand) → Offset -
Integer (truncating) division operator. Returns an offset whose coordinates are the coordinates of the left-hand-side operand (an Offset) divided by the scalar right-hand-side operand (a double), rounded towards zero.
Methods
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a non-existent method or property is accessed.
inherited -
scale(
double scaleX, double scaleY) → Offset -
Returns a new offset with the x component scaled by scaleX and the y component scaled by scaleY.
-
toPoint(
) → Point -
Returns the point at (0, 0) plus this offset.
-
toString(
) → String -
Returns a string representation of this object.
-
translate(
double translateX, double translateY) → Offset -
Returns a new offset with translateX added to the x component and translateY added to the y component.


Thank you! :-)
closed
by David Platt at 2020-07-27 21:52:16.labeled
by James R. Griffin III at 2020-07-27 20:18:39.labeled
by James R. Griffin III at 2020-07-27 20:18:39.labeled
by James R. Griffin III at 2020-07-27 20:18:39.assigned
by James R. Griffin III at 2020-07-27 20:18:39.There are bibids for example: 4719556 (Special Collections - Cotsen Children's Library), 4133649 (East Asian Library - Rare Books) that have no items and they require a Reading Room Request. If we are considering to have CDL for rare books we should think of a way how to handle the EligibleItemService since for most of them there are no items to be checked out to a cdl patron_group.
renamed
by Christina Chortaria at 2020-07-27 17:09:32.labeled
by Christina Chortaria at 2020-07-27 17:11:25.head_ref_force_pushed
by Trey Pendragon at 2020-07-27 18:19:45.Figgy/production] Dry::Types::ConstraintError: "" violates constraints (type?(Array, "") failed)
This was reported in the digital library channel by @tventimi
Clicking the Detach button on an item it raises 'Something went wrong'. The item disappears from figgy
renamed
by Christina Chortaria at 2020-07-27 13:00:56.renamed
by Christina Chortaria at 2020-07-27 13:01:01.mentioned
by None at 2020-07-27 13:11:09.subscribed
by None at 2020-07-27 13:11:10.renamed
by None at 2020-07-27 13:41:38.labeled
by Christina Chortaria at 2020-07-27 22:08:19.Coverage decreased (-0.7%) to 79.207% when pulling 3e37e62dbb5db2928d7fa28053b73c2512948bca on alma-implementation into 73a88ecc1c421245a8ca5a7f4a3ee125de65ba91 on master.
head_ref_force_pushed
by Christina Chortaria at 2020-07-27 15:28:20.head_ref_force_pushed
by Christina Chortaria at 2020-07-27 15:47:23.referenced
by Francis Kayiwa at 2020-07-27 13:35:44.merged
by Francis Kayiwa at 2020-07-27 13:35:44.closed
by Francis Kayiwa at 2020-07-27 13:35:44.head_ref_deleted
by Francis Kayiwa at 2020-07-27 13:35:47.referenced
by Francis Kayiwa at 2020-07-27 14:51:45.merged
by Francis Kayiwa at 2020-07-27 14:51:46.closed
by Francis Kayiwa at 2020-07-27 14:51:46.head_ref_deleted
by Francis Kayiwa at 2020-07-27 14:51:50.head_ref_deleted
by Eliot Jordan at 2020-07-27 15:50:03.assigned
by None at 2020-07-27 12:14:12.referenced
by Kevin Reiss at 2020-07-27 13:09:36.merged
by Kevin Reiss at 2020-07-27 13:09:36.closed
by Kevin Reiss at 2020-07-27 13:09:36.head_ref_deleted
by Kevin Reiss at 2020-07-27 13:09:43.referenced
by Kevin Reiss at 2020-07-27 14:21:35.merged
by Kevin Reiss at 2020-07-27 14:21:35.closed
by Kevin Reiss at 2020-07-27 14:21:35.head_ref_deleted
by Kevin Reiss at 2020-07-27 14:21:41.


Simple TODO List
Enter keyword to search tasks by keyword
Enter keyword to search tasks by keyword
Enter keywords for excluding tasks based on keyword
Show only top level tasks


Revamping My Blog
March 1, 2015
What Is This Post About?
I’ve been blogging since 2004. The length span until 2015, doesn’t mean that I’m a good writer. I just like to write.
Started from a handmade blogging platform, circa 2005, that was hosted at .co.nr then they just deleted all of my files. In 2008, I switched to Wordpress. For some reasons, I hate how Wordpress editor looks like. It’s not for writing, it’s for publishing. So there is an issue there. Then, my hosting company, accidentally deleted my files (again) and I assure you, there was no single issue with payment.  Getting frustrated, I stopped to write.
In 2014, I’ve made myself a blogging platform, called Writ.Ink, a platform that crafted carefully to meet my needs. It’s done. Starting from there, I always take a look at it and see if there’s any problem.
In 2015, a week ago, I’ve concluded few factors that could be my fundamental thoughts about how a blog should resembled. Let me elaborate it.
Standardized Writing Syntax
There is no one, I tell you, no one in this life that would write using HTML.
It would be pretty hard, even for me to write using HTML tags.
Fortunately, there’s Markdown that could simplify my issue. Been using for 2 years and I have no problem with converting back and forth to other formats.
Solution : Start to use Markdown.
Low Cost
Blogging platform should be low cost but not free. Not free because I still need to pay for the domain, emails, etc. In the other hands, the blogging platform I’ll choose should be low cost.
Solution: S3 or Github Pages are the saviors.
Personalisation
Blog should be personal. Personalized enough to show it off to public, in order to distinct yourself among the others. Unfortunately, blogging platform is relatively hard and tough to make it has a personal touch. Although that I am a geek, I don’t have much time to put extra efforts to make it personalized enough. So, platforms that could generate a static files are the answer because you’ll see how your blog looks like in HTML without any implicit linking like Wordpress. (Sorry Matt, it is just too bloated for me.)
Solution: Use Jekyll, Pelican, Octopress
Own The Content
One major problem that I had through my experience is the security of the contents. I’m not talking about how the contents should be stored, using NSA level of encryption, but I’m talking about owning the content. You, I, we should own the content and not to be stored in anyone database. No matter how cheesy your content is, or how scientific it could be, blog posts that you’ve made is a piece of work that you might highly perceive it than any others.
Conclusion
I am happy to announce that I’m back blogging with Jekyll, Markdown and Github Pages. It’s low cost, I own the content, personalized enough and I could write it using any Markdown editors that I have. Plus, with help from Dropbox, I could easily access and build my blog whenever and wherever I feel I need to.


--- title: "Crypto studies. Why?" author: "Marcelo Ventura" date: 2018-08-28T21:18:13-05:00 slug: crypto-studies-why categories: ["R"] tags: ["Crypto", "Bitcoin", "Analytics"] ---
As a crypto investor and enthusiast, I’d be unhappy to not study and analyze its market.
After finishing this work, I was very tired and wanted to do a quick project which could make me happy. So I called a friend in Rio and invited him to make a project submission to the annual excellent event SER (International Seminar of Statistics with R) which is hosted and created by UFF (Universidade Federal Fluminense).
He replied me and we talked about mutual interests among cryptos, and we’ve decided to work on a Poster submission about Crypto modeling.
Despite all limitations (including page limits) and the distance between Rio and Brasília we finished everything in 5 days.
“Everything” was possible only because of coinmarketcap excellent website. This is a really interesting way to find crypto data.
Back to our idea…we focused on main two subtopics: data mining and crypto modeling. We’ve found a nice approach given by this Python solution.
The objective was to create a framework where 5 cryptocoins were modeled, and its regressions were compared. How?
Our regression model was based on the Generalized Hyperbolic distribution, see this.


To import, you must have a .json file containing:
{
"icon": "example",
"name": "Value",
"key": "Unique value",
"algorithm": "function(param) {...}"
}
Icon: FontAwesome icon (eg: fa-cog)
Name: Name of plugin (eg: Email)
key: Unique value of plugin (eg: email)
Algorithms: A string which represent a javascript
function which take 1 parameter and return a json
The param will have the next form: {url: string, text: string}
Select what you want to record


Jeremy Howard and Rachel Thomas are founders of fast.ai whose aim is to make deep learning accessible to all. They offer a course called Practical Deep Learning for Coders (Part 1). The last session, taught by Jeremy, was in Fall 2017 and the videos were released early January 2018. Their approach is top down by showing different applications first as black boxes followed by progressive peeling of the black box to teach the details of how things work. The course uses python and they have developed a python library fastai that is a wrapper around PyTorch.
I wanted to learn reticulate by trying to create a R version of one of the python notebooks from that class. The class covers the topic of collaborative filtering in lecture 5 and lecture 6. The dataset used is a sample of movielens dataset where about ~670 users have rated ~9000 movies. The objective is to develop a model to predict the rating that a user will give for a particular movie.
The Jupyter notebook for this topic is divided into 2 portions:
- In the first half, the model is developed using just high level fastai functions. The R notebook for the first half is located here.
- In the second half, the model is developed from scratch and 3 different types of models are discussed going from matrix factorization type model to deep learning type models. The R notebook for the second half is located here.
Since the first half involved mainly python functions from fastai library, it seemed like a good use case for reticulate since we could use reticulate just for model development and use R functions for other pre and post processing tasks. The second half involved model building from scratch. In pyTorch, custom models need to be written as python classes. While it was still possible to use reticulate in this case, this may not be the ideal use case since it might be better for somebody developing custom models to do the whole work in python. But once they wrap it into a python package, it is easier to use from R. Overall, reticulate was great to work with and it made it very easy to translate a python function to an equivalent R function. It is a great addition to the R packages.


GameBoy Sprite Editor
Github
Gitlab
Framagit
Switch to light theme
Switch to dark theme
Home
Projects
About
Resize
Translate to hex
Read from hex
Create download link
Download Sprite


{% extends "header.html" %} {% block body %}
Now we're ready to dig into what makes an image in numbers. For this, we use PIL or Pillow, depending on what you were able to install (depending on your Python bit-version).
# if you are on 32 bit os # import Image # 64 bit with pillow: from PIL import Image import numpy as np
Use whichever import you need to use, depending on your bit-version. I use PIL because I am using a 64-bit version of Python.
We are then just importing numpy as np. Numpy is used for number-crunching.
Now let's see our image in numbers.
i = Image.open('images/dot.png') iar = np.asarray(i) print(iar)
First we open the image using our image processor. Then we are saving the NumPy array version to iar, then outputting to console.
The output should look something like this, with non-chopped data:
[[[ 0 0 0 255] [255 255 255 255] [255 255 255 255] [255 255 255 255] [255 255 255 255] [255 255 255 255] [255 255 255 255] [255 255 255 255]] ... [[255 255 255 255] [255 255 255 255] [255 255 255 255] [255 255 255 255] [255 255 255 255] [255 255 255 255] [255 255 255 255] [255 255 255 255]]]
Here is a 3-dimensional array of the data. All of the data is the image, each matrix block is a row of data, and each element within that is the pixel values in RGB-A (Red Green Blue Alpha). Here's a picture that should help:


 PLEASE MODIFY THE ORIGINAL SOURCE IN THE https://github.com/istio/istio REPO source_repo: https://github.com/istio/istio title: galley description: Galley provides configuration management services for Istio. generator: pkg-collateral-docs number_of_entries: 5 ---
Galley provides configuration management services for Istio.
| Flags | Description |
|---|---|
--log_as_json |
Whether to format output as JSON or in plain console-friendly format |
--log_caller <string> |
Comma-separated list of scopes for which to include caller information, scopes can be any of [attributes, conversions, default, grpcAdapter, kube, kube-converter, mcp, meshconfig, model, processing, rbac, runtime, server, validation] (default ``) |
--log_output_level <string> |
Comma-separated minimum per-scope logging level of messages to output, in the form of <scope>:<level>,<scope>:<level>,... where scope can be one of [attributes, conversions, default, grpcAdapter, kube, kube-converter, mcp, meshconfig, model, processing, rbac, runtime, server, validation] and level can be one of [debug, info, warn, error, fatal, none] (default `default:info`) |
--log_rotate <string> |
The path for the optional rotating log file (default ``) |
--log_rotate_max_age <int> |
The maximum age in days of a log file beyond which the file is rotated (0 indicates no limit) (default `30`) |
--log_rotate_max_backups <int> |
The maximum number of log file backups to keep before older files are deleted (0 indicates no limit) (default `1000`) |
--log_rotate_max_size <int> |
The maximum size in megabytes of a log file beyond which the file is rotated (default `104857600`) |
--log_stacktrace_level <string> |
Comma-separated minimum per-scope logging level at which stack traces are captured, in the form of <scope>:<level>,<scope:level>,... where scope can be one of [attributes, conversions, default, grpcAdapter, kube, kube-converter, mcp, meshconfig, model, processing, rbac, runtime, server, validation] and level can be one of [debug, info, warn, error, fatal, none] (default `default:none`) |
--log_target <stringArray> |
The set of paths where to output the log. This can be any path as well as the special values stdout and stderr (default `[stdout]`) |
Check the liveness or readiness of a locally-running server
galley probe [flags]
| Flags | Description |
|---|---|
--interval <duration> |
Duration used for checking the target file's last modified time. (default `0s`) |
--log_as_json |
Whether to format output as JSON or in plain console-friendly format |
--log_caller <string> |
Comma-separated list of scopes for which to include caller information, scopes can be any of [attributes, conversions, default, grpcAdapter, kube, kube-converter, mcp, meshconfig, model, processing, rbac, runtime, server, validation] (default ``) |
--log_output_level <string> |
Comma-separated minimum per-scope logging level of messages to output, in the form of <scope>:<level>,<scope>:<level>,... where scope can be one of [attributes, conversions, default, grpcAdapter, kube, kube-converter, mcp, meshconfig, model, processing, rbac, runtime, server, validation] and level can be one of [debug, info, warn, error, fatal, none] (default `default:info`) |
--log_rotate <string> |
The path for the optional rotating log file (default ``) |
--log_rotate_max_age <int> |
The maximum age in days of a log file beyond which the file is rotated (0 indicates no limit) (default `30`) |
--log_rotate_max_backups <int> |
The maximum number of log file backups to keep before older files are deleted (0 indicates no limit) (default `1000`) |
--log_rotate_max_size <int> |
The maximum size in megabytes of a log file beyond which the file is rotated (default `104857600`) |
--log_stacktrace_level <string> |
Comma-separated minimum per-scope logging level at which stack traces are captured, in the form of <scope>:<level>,<scope:level>,... where scope can be one of [attributes, conversions, default, grpcAdapter, kube, kube-converter, mcp, meshconfig, model, processing, rbac, runtime, server, validation] and level can be one of [debug, info, warn, error, fatal, none] (default `default:none`) |
--log_target <stringArray> |
The set of paths where to output the log. This can be any path as well as the special values stdout and stderr (default `[stdout]`) |
--probe-path <string> |
Path of the file for checking the availability. (default ``) |
Starts Galley as a server
galley server [flags]
| Flags | Description |
|---|---|
--accessListFile <string> |
The access list yaml file that contains the allowd mTLS peer ids. (default `/etc/config/accesslist.yaml`) |
--caCertFile <string> |
File containing the caBundle that signed the cert/key specified by --tlsCertFile and --tlsKeyFile. (default `/etc/certs/root-cert.pem`) |
--configPath <string> |
Istio config file path (default ``) |
--ctrlz_address <string> |
The IP Address to listen on for the ControlZ introspection facility. Use '*' to indicate all addresses. (default `<IP_ADDRESS>`) |
--ctrlz_port <uint16> |
The IP port to use for the ControlZ introspection facility (default `9876`) |
--deployment-name <string> |
Name of the deployment for the validation pod (default `istio-galley`) |
--deployment-namespace <string> |
Namespace of the deployment for the validation pod (default `istio-system`) |
--disableResourceReadyCheck |
Disable resource readiness checks. This allows Galley to start if not all resource types are supported |
--domain <string> |
DNS domain suffix (default `cluster.local`) |
--enable-server |
Run galley server mode |
--enable-validation |
Run galley validation mode |
--enableProfiling |
Enable profiling for Galley |
--excludedResourceKinds <stringSlice> |
Comma-separated list of resource kinds that should not generate source events (default `[Endpoints,Node,Pod,Service]`) |
--insecure |
Use insecure gRPC communication |
--kubeconfig <string> |
Use a Kubernetes configuration file instead of in-cluster configuration (default ``) |
--livenessProbeInterval <duration> |
Interval of updating file for the Galley liveness probe. (default `2s`) |
--livenessProbePath <string> |
Path to the file for the Galley liveness probe. (default `/healthLiveness`) |
--log_as_json |
Whether to format output as JSON or in plain console-friendly format |
--log_caller <string> |
Comma-separated list of scopes for which to include caller information, scopes can be any of [attributes, conversions, default, grpcAdapter, kube, kube-converter, mcp, meshconfig, model, processing, rbac, runtime, server, validation] (default ``) |
--log_output_level <string> |
Comma-separated minimum per-scope logging level of messages to output, in the form of <scope>:<level>,<scope>:<level>,... where scope can be one of [attributes, conversions, default, grpcAdapter, kube, kube-converter, mcp, meshconfig, model, processing, rbac, runtime, server, validation] and level can be one of [debug, info, warn, error, fatal, none] (default `default:info`) |
--log_rotate <string> |
The path for the optional rotating log file (default ``) |
--log_rotate_max_age <int> |
The maximum age in days of a log file beyond which the file is rotated (0 indicates no limit) (default `30`) |
--log_rotate_max_backups <int> |
The maximum number of log file backups to keep before older files are deleted (0 indicates no limit) (default `1000`) |
--log_rotate_max_size <int> |
The maximum size in megabytes of a log file beyond which the file is rotated (default `104857600`) |
--log_stacktrace_level <string> |
Comma-separated minimum per-scope logging level at which stack traces are captured, in the form of <scope>:<level>,<scope:level>,... where scope can be one of [attributes, conversions, default, grpcAdapter, kube, kube-converter, mcp, meshconfig, model, processing, rbac, runtime, server, validation] and level can be one of [debug, info, warn, error, fatal, none] (default `default:none`) |
--log_target <stringArray> |
The set of paths where to output the log. This can be any path as well as the special values stdout and stderr (default `[stdout]`) |
--meshConfigFile <string> |
Path to the mesh config file (default `/etc/mesh-config/mesh`) |
--monitoringPort <uint> |
Port to use for exposing self-monitoring information (default `15014`) |
--pprofPort <uint> |
Port to use for exposing profiling (default `9094`) |
--readinessProbeInterval <duration> |
Interval of updating file for the Galley readiness probe. (default `2s`) |
--readinessProbePath <string> |
Path to the file for the Galley readiness probe. (default `/healthReadiness`) |
--resyncPeriod <duration> |
Resync period for rescanning Kubernetes resources (default `0s`) |
--server-address <string> |
Address to use for Galley's gRPC API, e.g. tcp://<IP_ADDRESS>:9092 or unix:///path/to/file (default `tcp://<IP_ADDRESS>:9901`) |
--server-maxConcurrentStreams <uint> |
Maximum number of outstanding RPCs per connection (default `1024`) |
--server-maxReceivedMessageSize <uint> |
Maximum size of individual gRPC messages (default `1048576`) |
--service-name <string> |
Name of the validation service running in the same namespace as the deployment (default `istio-galley`) |
--sinkAddress <string> |
Address of MCP Resource Sink server for Galley to connect to. Ex: 'foo.com:1234' (default ``) |
--sinkAuthMode <string> |
Name of authentication plugin to use for connection to sink server. (default ``) |
--sinkMeta <stringSlice> |
Comma-separated list of key=values to attach as metadata to outgoing sink connections. Ex: 'key=value,key2=value2' (default `[]`) |
--tlsCertFile <string> |
File containing the x509 Certificate for HTTPS. (default `/etc/certs/cert-chain.pem`) |
--tlsKeyFile <string> |
File containing the x509 private key matching --tlsCertFile. (default `/etc/certs/key.pem`) |
--validation-port <uint> |
HTTPS port of the validation service. Must be 443 if service has more than one port (default `443`) |
--validation-webhook-config-file <string> |
File that contains k8s validatingwebhookconfiguration yaml. Validation is disabled if file is not specified (default ``) |
--webhook-name <string> |
Name of the k8s validatingwebhookconfiguration (default `istio-galley`) |
Prints out build version information
galley version [flags]
| Flags | Shorthand | Description |
|---|---|---|
--log_as_json |
Whether to format output as JSON or in plain console-friendly format | |
--log_caller <string> |
Comma-separated list of scopes for which to include caller information, scopes can be any of [attributes, conversions, default, grpcAdapter, kube, kube-converter, mcp, meshconfig, model, processing, rbac, runtime, server, validation] (default ``) | |
--log_output_level <string> |
Comma-separated minimum per-scope logging level of messages to output, in the form of <scope>:<level>,<scope>:<level>,... where scope can be one of [attributes, conversions, default, grpcAdapter, kube, kube-converter, mcp, meshconfig, model, processing, rbac, runtime, server, validation] and level can be one of [debug, info, warn, error, fatal, none] (default `default:info`) | |
--log_rotate <string> |
The path for the optional rotating log file (default ``) | |
--log_rotate_max_age <int> |
The maximum age in days of a log file beyond which the file is rotated (0 indicates no limit) (default `30`) | |
--log_rotate_max_backups <int> |
The maximum number of log file backups to keep before older files are deleted (0 indicates no limit) (default `1000`) | |
--log_rotate_max_size <int> |
The maximum size in megabytes of a log file beyond which the file is rotated (default `104857600`) | |
--log_stacktrace_level <string> |
Comma-separated minimum per-scope logging level at which stack traces are captured, in the form of <scope>:<level>,<scope:level>,... where scope can be one of [attributes, conversions, default, grpcAdapter, kube, kube-converter, mcp, meshconfig, model, processing, rbac, runtime, server, validation] and level can be one of [debug, info, warn, error, fatal, none] (default `default:none`) | |
--log_target <stringArray> |
The set of paths where to output the log. This can be any path as well as the special values stdout and stderr (default `[stdout]`) | |
--output <string> |
-o |
One of 'yaml' or 'json'. (default ``) |
--short |
-s |
Displays a short form of the version information |
galley
command.
| Variable Name | Type | Default Value | Description |
|---|---|---|---|
AUTHZ_FAILURE_LOG_BURST_SIZE |
Integer | 1 |
|
AUTHZ_FAILURE_LOG_FREQ |
Time Duration | 1m0s |
|
BYPASS_OOP_MTLS_SAN_VERIFICATION |
Boolean | false |
|
ISTIO_GPRC_MAXSTREAMS |
Integer | 100000 |
|
ISTIO_LANG |
String |
|
|
KUBECONFIG |
String |
|
|
NEW_CONNECTION_BURST_SIZE |
Integer | 10 |
|
NEW_CONNECTION_FREQ |
Time Duration | 10ms |
|
PILOT_CERT_DIR |
String |
|
|
PILOT_DEBOUNCE_AFTER |
Time Duration | 100ms |
|
PILOT_DEBOUNCE_MAX |
Time Duration | 10s |
|
PILOT_DEBUG_ADSZ_CONFIG |
Boolean | false |
|
PILOT_DISABLE_EDS_ISOLATION |
String |
|
|
PILOT_DISABLE_XDS_MARSHALING_TO_ANY |
String |
|
|
PILOT_ENABLE_CDS_PRECOMPUTATION |
String |
|
|
PILOT_ENABLE_LOCALITY_LOAD_BALANCING |
String |
|
|
PILOT_ENABLE_WAIT_CACHE_SYNC |
String |
|
|
PILOT_HTTP10 |
Boolean | false |
|
PILOT_PUSH_BURST |
Integer | 100 |
|
PILOT_PUSH_THROTTLE |
Integer | 10 |
|
PILOT_TRACE_SAMPLING |
Floating-Point | 100 |
|
POD_NAMESPACE |
String | istio-system |
|
TERMINATION_DRAIN_DURATION_SECONDS |
String |
|
|
USE_MCP_LEGACY |
Boolean | false |
|
V2_REFRESH |
Time Duration | 0s |


Samuel Berthe
“The best way to be a 10x developer,
is to help 5 other people be 2x developers.”
{ "current_status": "Actively building
Screeb.app
" }


HEAD ======= >>>>>>> frontend
Click here to Sign up to become an organ donor
Click hereIt is very important to spreed awareness!
Not only to friends, but to family members aswell.
Spread the message of organ donation by joining the #2MinuteHero challenge, and tag your friends and share on Social Media!
Spread the message of organ donation by joining the #2MinuteHero challenge, and tag your friends and share on Social Media!