Web services are server applications that does not have user interface. Instead visual interface, a response is processed back.
Each web service has an address (A) which is a combination of IP and port (generally aliased using to an URL). Web service would be callable with certain protocol (HTTP, TCP, etc..). Binding (B) tells client on how to connect to services. Web service also its input data structure. also known as contract © of web service.
WSDL/WADL are special XML that are used to represent the web service definitions. Definitions essentials contains ABCs of the web service
SOAP is acronym for Simple Object Access Protocol. It is a messaging standard used in communication between 2 softwares. It is basically an XML sent over HTTP requests and responses. SOAP requests are HTTP POST calls made with SOAP message request body. Response would have content type as text/xml.
Rest is acronym for REpresentational State Transfer. Everything is a resource in REST and is identified using URI (Uniform Resource Identifier ). Here, CURD can be analogized to PUT, POST, GET, DELETE operations of HTTP. Also, PUT and DELETE are called Idempotent Operations as it does same thing whenever called.
A new style of web services. It is basically building applications as suites of services. Services here would be independently deployed and can be managed by different teams. Componentization via services and designing for failures are key approaches to enable microservices


To a person like you and me, heat is very important. We heat our food, get hot in the sun, feel the body heat when hugging someone, avoid touching things that are too hot and with too little heat we start freezing.
But what is heat?
Turn off the friction.
Give the particles a shove.
This is heat.
Particles moving around randomly, endlessly.
- Balls bouncing around
- This is heat
- Random motion of the tiny stuff that makes up everything
- Heat is kinetic energy, but chaotic
- Try decreasing energy
- a few particles -> kinetic energy is easily controllable
- a lot of particles -> heat is completely random
- Show a solid too
-
Links to heat energy
- Balloon model
- A rope with two ends stuck
- As the air inside gets colder, the baloon shrinks because of the outside pressure


{% endblock %}
{% extends 'base.html' %} {% block title %}See you!{% endblock %} {% block content %}
Logged out
You have been successfully logged out.
Log in
again.
{% endblock %}


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object Activity net.hockeyapp.android.FeedbackActivity
public class FeedbackActivity
Copyright (c) 2011-2013 Bit Stadium GmbH Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
| Constructor Summary | |
|---|---|
FeedbackActivity()
|
| Method Summary | |
|---|---|
protected void |
configureFeedbackView(boolean haveToken)
Configures the content view by initializing the input EditText s
and the listener for the Send Feedback Button |
void |
enableDisableSendFeedbackButton(boolean isEnable)
Enables/Disables the Send Feedback button. |
ViewGroup |
getLayoutView()
Creates and returns a new instance of FeedbackView |
void |
onClick(View v)
Called when the Send Feedback Button is tapped. |
void |
onCreate(Bundle savedInstanceState)
Called when the activity is starting. |
protected Dialog |
onCreateDialog(int id)
|
boolean |
onKeyDown(int keyCode,
KeyEvent event)
|
protected void |
onPrepareDialog(int id,
Dialog dialog)
|
java.lang.Object |
onRetainNonConfigurationInstance()
Detaches the activity from the send feedback task and returns the task as last instance. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public FeedbackActivity()
| Method Detail |
|---|
public void onCreate(Bundle savedInstanceState)
savedInstanceState
- Data it most recently supplied in
onSaveInstanceState(Bundle)protected void configureFeedbackView(boolean haveToken)
EditText
s
and the listener for the Send Feedback Button
public ViewGroup getLayoutView()
FeedbackView
getLayoutView
in interface FeedbackActivityInterface
FeedbackView
public void enableDisableSendFeedbackButton(boolean isEnable)
public java.lang.Object onRetainNonConfigurationInstance()
public void onClick(View v)
Button
is tapped. Sends the feedback and disables
the button to avoid multiple taps.
protected Dialog onCreateDialog(int id)
protected void onPrepareDialog(int id, Dialog dialog)
public boolean onKeyDown(int keyCode, KeyEvent event)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


{% extends 'base.html' %}
{% block title %}About Us | Fidel{% endblock title %}
{% load static %}
{% block content %}
Fidel Books is a Platform that allows you to connect with other like minded readers, swap books, discuss, comment and review books.


 The Best of Software Writing by Joel Spolsky was the first book that I read during the holiday and it rocks. The book is really just a collection of blog posts that are put together to show what good writing on software is all about. Some examples follow:

 Michael Bean wrote about the pitfalls of outsourcing programmers and it’s a wonderful article that I would have loved to have handy some time ago. It did leave me with the idea that outsourcing IT is really an all or nothing approach and then you need to decide about your product development and other stuff too. Even if you see yourself only remotely as an IT shop, don’t outsource your coding artists.

 Adam Bosworth’s ISCOC04 Talk post is a wonderful thing to read. He says that for a design and architecture to be successful, it need to be simple. He does cite some examples. He believes that the good thing about Web 2.0 is that it enables new ways for us to get rid of information overload and he believes that: "The currency of reputation and judgement is the answer to the tragedy of the commons, it it will find a way." He believes machine learning, inference and data mining will become very important. But hey, he’s a main Google guy, so what do you expect ;)

 Danah Boyd argues that users don’t use services or software for what they are designed for but rather for something that they think is worthy of their time and you need to keep your app flexible enough to allow for that. You don’t know what users want!

 Bruce Eckel’s post is about strong typing vs. strong testing. He does a lot in python at the moment which isn’t strong typing. He does argue that you need testing in any case and that means that you should just have a very strong test environment and use a less strict language for a lot of cases.

 Paul Graham writes about Great Hackers and that one is really wonderful to read. He argues that there is a great variety in productivity between coders and you cannot let that productivity be dragged down to the mainstream. You need to understand them and here are some of his ideas about great hackers:
- they love to code
- they are only attracted by money because with lots of it you can do what you want. If you can do what you want with good money that’s ok too.
- they want open source stuff because they can control and fix it themselves
- they need an office similar to their home, with a couch and doors so they can relax
- they need something interesting but hey, you can make it interesting and very demanding. It’s your demand that counts.
- for a share in a company Einstein seems to have worked on building refrigerators, but I didn’t check that.
- They need big problems
- they do tend to come in groups and work better in groups and, my own words here, 1+1 tends to make 3 and 1+0.5 = 0.5. So you need big guns together

 Another one, entitled How many Microsoft Employees does it take to change a lightbulb by Eric Lippert is wonderful to read! And yes, it is not a joke! It does take A LOT of people to change something small, and that means it does take. :)

 There are lots of other ones that are a real must read but I will let you buy the book and take it with you on a holiday. I know you will not be able to do without IT the entire time but leave everything else at home. This one will make you think a lot. I for one will subscribe to randsinresponse.com and send a few other ones around. Great stuff! Buy the book!


--- title: Plain Text to HTML List Converter | Developer Tools layout: post ---
{% include common-meta %}This is a free online tool to convert simple plain text data into a HTML list. The new line delimiter is detected automatically.
Yes, you can simply copy and paste your document into the input field and we will convert it to HTML list format.
HTML List is a way to display list of values on HTML form.
An Ordered list is automatically numbered by HTML. It is represented by >OL<
tag in HTML code.
An Un-Ordered list is not numbered by HTML. It is represented by >UL<
tag in HTML code.
Plain text data can be difficult to display on HTML page. When you need to show the data on a HTML page you can convert it to HTML list tags.
Any plain text data can be converted on this page. We smartly detect the new line delimiter in your data and format the HTML list tags for you.


There are 8 downloads available for this article.
The latest version is highly recommended, and is clearly marked, however older version may also be available.
Author: Emil A Eklund


Identifying issues and resolutions¶
Is the system up?¶
If you have a report that Swift is down, perform the following basic checks:
- Run swift functional tests.
- From a server in your data center, use
curl
to check/healthcheck
(see below). - If you have a monitoring system, check your monitoring system.
- Check your hardware load balancers infrastructure.
- Run swift-recon on a proxy node.
Functional tests usage¶
We would recommend that you set up the functional tests to run against your production system. Run regularly this can be a useful tool to validate that the system is configured correctly. In addition, it can provide early warning about failures in your system (if the functional tests stop working, user applications will also probably stop working).
A script for running the function tests is located in swift/.functests
.
External monitoring¶
We use pingdom.com to monitor the external Swift API. We suggest the following:
- Do a GET on
/healthcheck
- Create a container, make it public (x-container-read: .r*,.rlistings), create a small file in the container; do a GET on the object
Diagnose: General approach¶
- Look at service status in your monitoring system.
- In addition to system monitoring tools and issue logging by users, swift errors will often result in log entries (see Diagnose: Interpreting messages in /var/log/swift/ files).
- Look at any logs your deployment tool produces.
- Log files should be reviewed for error signatures (see below) that may point to a known issue, or root cause issues reported by the diagnostics tools, prior to escalation.
Dependencies¶
The Swift software is dependent on overall system health. Operating system level issues with network connectivity, domain name resolution, user management, hardware and system configuration and capacity in terms of memory and free disk space, may result is secondary Swift issues. System level issues should be resolved prior to diagnosis of swift issues.
Diagnose: Swift-dispersion-report¶
The swift-dispersion-report is a useful tool to gauge the general
health of the system. Configure the swift-dispersion
report to cover at
a minimum every disk drive in your system (usually 1% coverage).
See Dispersion Report for details of how to configure and
use the dispersion reporting tool.
The swift-dispersion-report
tool can take a long time to run, especially
if any servers are down. We suggest you run it regularly
(e.g., in a cron job) and save the results. This makes it easy to refer
to the last report without having to wait for a long-running command
to complete.
Diagnose: Is system responding to /healthcheck?¶
When you want to establish if a swift endpoint is running, run curl -k
against https://[ENDPOINT]/healthcheck.
Diagnose: Interpreting messages in /var/log/swift/
files¶
Note
In the Hewlett Packard Enterprise Helion Public Cloud we send logs to
proxy.log
(proxy-server logs), server.log
(object-server,
account-server, container-server logs), background.log
(all
other servers [object-replicator, etc]).
The following table lists known issues:
| Logfile | Signature | Issue | Steps to take |
|---|---|---|---|
| /var/log/syslog | kernel: [] sd .... [csbu:sd...] Sense Key: Medium Error | Suggests disk surface issues | Run swift-drive-audit on the target node to check for disk errors,
repair disk errors |
| /var/log/syslog | kernel: [] sd .... [csbu:sd...] Sense Key: Hardware Error | Suggests storage hardware issues | Run diagnostics on the target node to check for disk failures, replace failed disks |
| /var/log/syslog | kernel: [] .... I/O error, dev sd.... ,sector .... | Run diagnostics on the target node to check for disk errors | |
| /var/log/syslog | pound: NULL get_thr_arg | Multiple threads woke up | Noise, safe to ignore |
| /var/log/swift/proxy.log | .... ERROR .... ConnectionTimeout .... | A storage node is not responding in a timely fashion | Check if node is down, not running Swift, unconfigured, storage off-line or for network issues between the proxy and non responding node |
| /var/log/swift/proxy.log | proxy-server .... HTTP/1.0 500 .... | A proxy server has reported an internal server error | Examine the logs for any errors at the time the error was reported to attempt to understand the cause of the error. |
| /var/log/swift/server.log | .... ERROR .... ConnectionTimeout .... | A storage server is not responding in a timely fashion | Check if node is down, not running Swift, unconfigured, storage off-line or for network issues between the server and non responding node |
| /var/log/swift/server.log | .... ERROR .... Remote I/O error: ‘/srv/node/disk.... | A storage device is not responding as expected | Run swift-drive-audit and check the filesystem named in the error
for corruption (unmount & xfs_repair). Check if the filesystem
is mounted and working. |
| /var/log/swift/background.log | object-server ERROR container update failed .... Connection refused | A container server node could not be contacted | Check if node is down, not running Swift, unconfigured, storage off-line or for network issues between the server and non responding node |
| /var/log/swift/background.log | object-updater ERROR with remote .... ConnectionTimeout | The remote container server is busy | If the container is very large, some errors updating it can be expected. However, this error can also occur if there is a networking issue. |
| /var/log/swift/background.log | account-reaper STDOUT: .... error: ECONNREFUSED | Network connectivity issue or the target server is down. | Resolve network issue or reboot the target server |
| /var/log/swift/background.log | .... ERROR .... ConnectionTimeout | A storage server is not responding in a timely fashion | The target server may be busy. However, this error can also occur if there is a networking issue. |
| /var/log/swift/background.log | .... ERROR syncing .... Timeout | A timeout occurred syncing data to another node. | The target server may be busy. However, this error can also occur if there is a networking issue. |
| /var/log/swift/background.log | .... ERROR Remote drive not mounted .... | A storage server disk is unavailable | Repair and remount the file system (on the remote node) |
| /var/log/swift/background.log | object-replicator .... responded as unmounted | A storage server disk is unavailable | Repair and remount the file system (on the remote node) |
| /var/log/swift/*.log | STDOUT: EXCEPTION IN | A unexpected error occurred | Read the Traceback details, if it matches known issues (e.g. active network/disk issues), check for re-ocurrences after the primary issues have been resolved |
| /var/log/rsyncd.log | rsync: mkdir “/disk....failed: No such file or directory.... | A local storage server disk is unavailable | Run diagnostics on the node to check for a failed or unmounted disk |
| /var/log/swift* | Exception: Could not bind to <IP_ADDRESS>:6xxx | Possible Swift process restart issue. This indicates an old swift process is still running. | Restart Swift services. If some swift services are reported down, check if they left residual process behind. |
Diagnose: Parted reports the backup GPT table is corrupt¶
If a GPT table is broken, a message like the following should be observed when the following command is run:
$ sudo parted -l
Error: The backup GPT table is corrupt, but the primary appears OK, so that will be used. OK/Cancel?
To fix, go to Fix broken GPT table (broken disk partition)
Diagnose: Drives diagnostic reports a FS label is not acceptable¶
If diagnostics reports something like “FS label: obj001dsk011 is not acceptable”, it indicates that a partition has a valid disk label, but an invalid filesystem label. In such cases proceed as follows:
Verify that the disk labels are correct:
FS=/dev/sd#1 sudo parted -l | grep object
If partition labels are inconsistent then, resolve the disk label issues before proceeding:
sudo parted -s ${FS} name ${PART_NO} ${PART_NAME} #Partition Label #PART_NO is 1 for object disks and 3 for OS disks #PART_NAME follows the convention seen in "sudo parted -l | grep object"
If the Filesystem label is missing then create it with care:
sudo xfs_admin -l ${FS} #Filesystem label (12 Char limit) #Check for the existence of a FS label OBJNO=<3 Length Object No.> #I.E OBJNO for sw-stbaz3-object0007 would be 007 DISKNO=<3 Length Disk No.> #I.E DISKNO for /dev/sdb would be 001, /dev/sdc would be 002 etc. sudo xfs_admin -L "obj${OBJNO}dsk${DISKNO}" ${FS} #Create a FS Label
Diagnose: Failed LUNs¶
Note
The HPE Helion Public Cloud uses direct attach SmartArray controllers/drives. The information here is specific to that environment. The hpacucli utility mentioned here may be called hpssacli in your environment.
The swift_diagnostics
mount checks may return a warning that a LUN has
failed, typically accompanied by DriveAudit check failures and device
errors.
Such cases are typically caused by a drive failure, and if drive check also reports a failed status for the underlying drive, then follow the procedure to replace the disk.
Otherwise the lun can be re-enabled as follows:
Generate a hpssacli diagnostic report. This report allows the DC team to troubleshoot potential cabling or hardware issues so it is imperative that you run it immediately when troubleshooting a failed LUN. You will come back later and grep this file for more details, but just generate it for now.
sudo hpssacli controller all diag file=/tmp/hpacu.diag ris=on xml=off zip=off
Export the following variables using the below instructions before proceeding further.
Print a list of logical drives and their numbers and take note of the failed drive’s number and array value (example output: “array A logicaldrive 1...” would be exported as LDRIVE=1):
sudo hpssacli controller slot=1 ld all show
Export the number of the logical drive that was retrieved from the previous command into the LDRIVE variable:
export LDRIVE=<LogicalDriveNumber>
Print the array value and Port:Box:Bay for all drives and take note of the Port:Box:Bay for the failed drive (example output: ” array A physicaldrive 2C:1:1...” would be exported as PBOX=2C:1:1). Match the array value of this output with the array value obtained from the previous command to be sure you are working on the same drive. Also, the array value usually matches the device name (For example, /dev/sdc in the case of “array c”), but we will run a different command to be sure we are operating on the correct device.
sudo hpssacli controller slot=1 pd all show
Note
Sometimes a LUN may appear to be failed as it is not and cannot
be mounted but the hpssacli/parted commands may show no problems with
the LUNS/drives. In this case, the filesystem may be corrupt and may be
necessary to run sudo xfs_check /dev/sd[a-l][1-2]
to see if there is
an xfs issue. The results of running this command may require that
xfs_repair
is run.
Export the Port:Box:Bay for the failed drive into the PBOX variable:
export PBOX=<Port:Box:Bay>
Print the physical device information and take note of the Disk Name (example output: “Disk Name: /dev/sdk” would be exported as DEV=/dev/sdk):
sudo hpssacli controller slot=1 ld ${LDRIVE} show detail | grep -i "Disk Name"
Export the device name variable from the preceding command (example: /dev/sdk):
export DEV=<Device>
Export the filesystem variable. Disks that are split between the operating system and data storage, typically sda and sdb, should only have repairs done on their data filesystem, usually /dev/sda2 and /dev/sdb2, Other data only disks have just one partition on the device, so the filesystem will be 1. In any case you should verify the data filesystem by running
df -h | grep /srv/node
and using the listed data filesystem for the device in question as the export. For example: /dev/sdk1.export FS=<Filesystem>
Verify the LUN is failed, and the device is not:
sudo hpssacli controller slot=1 ld all show sudo hpssacli controller slot=1 pd all show sudo hpssacli controller slot=1 ld ${LDRIVE} show detail sudo hpssacli controller slot=1 pd ${PBOX} show detail
Stop the swift and rsync service:
sudo service rsync stop sudo swift-init shutdown all
Unmount the problem drive, fix the LUN and the filesystem:
sudo umount ${FS}
If umount fails, you should run lsof search for the mountpoint and kill any lingering processes before repeating the unpount:
sudo hpacucli controller slot=1 ld ${LDRIVE} modify reenable sudo xfs_repair ${FS}
If the
xfs_repair
complains about possible journal data, use thexfs_repair -L
option to zeroise the journal log.Once complete test-mount the filesystem, and tidy up its lost and found area.
sudo mount ${FS} /mnt sudo rm -rf /mnt/lost+found/ sudo umount /mnt
Mount the filesystem and restart swift and rsync.
Run the following to determine if a DC ticket is needed to check the cables on the node:
grep -y media.exchanged /tmp/hpacu.diag grep -y hot.plug.count /tmp/hpacu.diag
If the output reports any non 0x00 values, it suggests that the cables should be checked. For example, log a DC ticket to check the sas cables between the drive and the expander.
Diagnose: Slow disk devices¶
Note
collectl is an open-source performance gathering/analysis tool.
If the diagnostics report a message such as sda: drive is slow
, you
should log onto the node and run the following command (remove -c 1
option to continuously monitor
the data):
$ /usr/bin/collectl -s D -c 1
waiting for 1 second sample...
# DISK STATISTICS (/sec)
# <---------reads---------><---------writes---------><--------averages--------> Pct
#Name KBytes Merged IOs Size KBytes Merged IOs Size RWSize QLen Wait SvcTim Util
sdb 204 0 33 6 43 0 4 11 6 1 7 6 23
sda 84 0 13 6 108 21 6 18 10 1 7 7 13
sdc 100 0 16 6 0 0 0 0 6 1 7 6 9
sdd 140 0 22 6 22 0 2 11 6 1 9 9 22
sde 76 0 12 6 255 0 52 5 5 1 2 1 10
sdf 276 0 44 6 0 0 0 0 6 1 11 8 38
sdg 112 0 17 7 18 0 2 9 6 1 7 7 13
sdh 3552 0 73 49 0 0 0 0 48 1 9 8 62
sdi 72 0 12 6 0 0 0 0 6 1 8 8 10
sdj 112 0 17 7 22 0 2 11 7 1 10 9 18
sdk 120 0 19 6 21 0 2 11 6 1 8 8 16
sdl 144 0 22 7 18 0 2 9 6 1 9 7 18
dm-0 0 0 0 0 0 0 0 0 0 0 0 0 0
dm-1 0 0 0 0 60 0 15 4 4 0 0 0 0
dm-2 0 0 0 0 48 0 12 4 4 0 0 0 0
dm-3 0 0 0 0 0 0 0 0 0 0 0 0 0
dm-4 0 0 0 0 0 0 0 0 0 0 0 0 0
dm-5 0 0 0 0 0 0 0 0 0 0 0 0 0
Look at the Wait
and SvcTime
values. It is not normal for
these values to exceed 50msec. This is known to impact customer
performance (upload/download). For a controller problem, many/all drives
will show long wait and service times. A reboot may correct the problem;
otherwise hardware replacement is needed.
Another way to look at the data is as follows:
$ /opt/hp/syseng/disk-anal.pl -d
Disk: sda Wait: 54580 371 65 25 12 6 6 0 1 2 0 46
Disk: sdb Wait: 54532 374 96 36 16 7 4 1 0 2 0 46
Disk: sdc Wait: 54345 554 105 29 15 4 7 1 4 4 0 46
Disk: sdd Wait: 54175 553 254 31 20 11 6 6 2 2 1 53
Disk: sde Wait: 54923 66 56 15 8 7 7 0 1 0 2 29
Disk: sdf Wait: 50952 941 565 403 426 366 442 447 338 99 38 97
Disk: sdg Wait: 50711 689 808 562 642 675 696 185 43 14 7 82
Disk: sdh Wait: 51018 668 688 483 575 542 692 275 55 22 9 87
Disk: sdi Wait: 51012 1011 849 672 568 240 344 280 38 13 6 81
Disk: sdj Wait: 50724 743 770 586 662 509 684 283 46 17 11 79
Disk: sdk Wait: 50886 700 585 517 633 511 729 352 89 23 8 81
Disk: sdl Wait: 50106 617 794 553 604 504 532 501 288 234 165 216
Disk: sda Time: 55040 22 16 6 1 1 13 0 0 0 3 12
Disk: sdb Time: 55014 41 19 8 3 1 8 0 0 0 3 17
Disk: sdc Time: 55032 23 14 8 9 2 6 1 0 0 0 19
Disk: sdd Time: 55022 29 17 12 6 2 11 0 0 0 1 14
Disk: sde Time: 55018 34 15 11 12 1 9 0 0 0 2 12
Disk: sdf Time: 54809 250 45 7 1 0 0 0 0 0 1 1
Disk: sdg Time: 55070 36 6 2 0 0 0 0 0 0 0 0
Disk: sdh Time: 55079 33 2 0 0 0 0 0 0 0 0 0
Disk: sdi Time: 55074 28 7 2 0 0 2 0 0 0 0 1
Disk: sdj Time: 55067 35 10 0 1 0 0 0 0 0 0 1
Disk: sdk Time: 55068 31 10 3 0 0 1 0 0 0 0 1
Disk: sdl Time: 54905 130 61 7 3 4 1 0 0 0 0 3
This shows the historical distribution of the wait and service times over a day. This is how you read it:
- sda did 54580 operations with a short wait time, 371 operations with a longer wait time and 65 with an even longer wait time.
- sdl did 50106 operations with a short wait time, but as you can see many took longer.
There is a clear pattern that sdf to sdl have a problem. Actually, sda to sde would more normally have lots of zeros in their data. But maybe this is a busy system. In this example it is worth changing the controller as the individual drives may be ok.
After the controller is changed, use collectl -s D as described above to see if the problem has cleared. disk-anal.pl will continue to show historical data. You can look at recent data as follows. It only looks at data from 13:15 to 14:15. As you can see, this is a relatively clean system (few if any long wait or service times):
$ /opt/hp/syseng/disk-anal.pl -d -t 13:15-14:15
Disk: sda Wait: 3600 0 0 0 0 0 0 0 0 0 0 0
Disk: sdb Wait: 3600 0 0 0 0 0 0 0 0 0 0 0
Disk: sdc Wait: 3600 0 0 0 0 0 0 0 0 0 0 0
Disk: sdd Wait: 3600 0 0 0 0 0 0 0 0 0 0 0
Disk: sde Wait: 3600 0 0 0 0 0 0 0 0 0 0 0
Disk: sdf Wait: 3600 0 0 0 0 0 0 0 0 0 0 0
Disk: sdg Wait: 3594 6 0 0 0 0 0 0 0 0 0 0
Disk: sdh Wait: 3600 0 0 0 0 0 0 0 0 0 0 0
Disk: sdi Wait: 3600 0 0 0 0 0 0 0 0 0 0 0
Disk: sdj Wait: 3600 0 0 0 0 0 0 0 0 0 0 0
Disk: sdk Wait: 3600 0 0 0 0 0 0 0 0 0 0 0
Disk: sdl Wait: 3599 1 0 0 0 0 0 0 0 0 0 0
Disk: sda Time: 3600 0 0 0 0 0 0 0 0 0 0 0
Disk: sdb Time: 3600 0 0 0 0 0 0 0 0 0 0 0
Disk: sdc Time: 3600 0 0 0 0 0 0 0 0 0 0 0
Disk: sdd Time: 3600 0 0 0 0 0 0 0 0 0 0 0
Disk: sde Time: 3600 0 0 0 0 0 0 0 0 0 0 0
Disk: sdf Time: 3600 0 0 0 0 0 0 0 0 0 0 0
Disk: sdg Time: 3594 6 0 0 0 0 0 0 0 0 0 0
Disk: sdh Time: 3600 0 0 0 0 0 0 0 0 0 0 0
Disk: sdi Time: 3600 0 0 0 0 0 0 0 0 0 0 0
Disk: sdj Time: 3600 0 0 0 0 0 0 0 0 0 0 0
Disk: sdk Time: 3600 0 0 0 0 0 0 0 0 0 0 0
Disk: sdl Time: 3599 1 0 0 0 0 0 0 0 0 0 0
For long wait times, where the service time appears normal is to check the logical drive cache status. While the cache may be enabled, it can be disabled on a per-drive basis.
Diagnose: Slow network link - Measuring network performance¶
Network faults can cause performance between Swift nodes to degrade. Testing
with netperf
is recommended. Other methods (such as copying large
files) may also work, but can produce inconclusive results.
Install netperf
on all systems if not
already installed. Check that the UFW rules for its control port are in place.
However, there are no pre-opened ports for netperf’s data connection. Pick a
port number. In this example, 12866 is used because it is one higher
than netperf’s default control port number, 12865. If you get very
strange results including zero values, you may not have gotten the data
port opened in UFW at the target or may have gotten the netperf
command-line wrong.
Pick a source
and target
node. The source is often a proxy node
and the target is often an object node. Using the same source proxy you
can test communication to different object nodes in different AZs to
identity possible bottlenecks.
Running tests¶
Prepare the
target
node as follows:sudo iptables -I INPUT -p tcp -j ACCEPT
Or, do:
sudo ufw allow 12866/tcp
On the
source
node, run the following command to check throughput. Note the double-dash before the -P option. The command takes 10 seconds to complete. Thetarget
node is <IP_ADDRESS>.$ netperf -H <IP_ADDRESS> -- -P 12866 MIGRATED TCP STREAM TEST from <IP_ADDRESS> (<IP_ADDRESS>) port 12866 AF_INET to <redacted>.72.4 (<redacted>.72.4) port 12866 AF_INET : demo Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. 10^6bits/sec 87380 16384 16384 10.02 923.69
On the
source
node, run the following command to check latency:$ netperf -H <IP_ADDRESS> -t TCP_RR -- -P 12866 MIGRATED TCP REQUEST/RESPONSE TEST from <IP_ADDRESS> (<IP_ADDRESS>) port 12866 AF_INET to <redacted>.72.4 (<redacted>.72.4) port 12866 AF_INET : demo : first burst 0 Local Remote Socket Size Request Resp. Elapsed Trans. Send Recv Size Size Time Rate bytes Bytes bytes bytes secs. per sec 16384 87380 1 1 10.00 11753.37 16384 87380
Expected results¶
Faults will show up as differences between different pairs of nodes. However, for reference, here are some expected numbers:
- For throughput, proxy to proxy, expect ~9300 Mbit/sec (proxies have a 10Ge link).
- For throughout, proxy to object, expect ~920 Mbit/sec (at time of writing this, object nodes have a 1Ge link).
- For throughput, object to object, expect ~920 Mbit/sec.
- For latency (all types), expect ~11000 transactions/sec.
Diagnose: Remapping sectors experiencing UREs¶
Find the bad sector, device, and filesystem in
kern.log
.Set the environment variables SEC, DEV & FS, for example:
SEC=2930954256 DEV=/dev/sdi FS=/dev/sdi1
Verify that the sector is bad:
sudo dd if=${DEV} of=/dev/null bs=512 count=1 skip=${SEC}
If the sector is bad this command will output an input/output error:
dd: reading `/dev/sdi`: Input/output error 0+0 records in 0+0 records out
Prevent chef from attempting to re-mount the filesystem while the repair is in progress:
sudo mv /etc/chef/client.pem /etc/chef/xx-client.xx-pem
Stop the swift and rsync service:
sudo service rsync stop sudo swift-init shutdown all
Unmount the problem drive:
sudo umount ${FS}
Overwrite/remap the bad sector:
sudo dd_rescue -d -A -m8b -s ${SEC}b ${DEV} ${DEV}
This command should report an input/output error the first time it is run. Run the command a second time, if it successfully remapped the bad sector it should not report an input/output error.
Verify the sector is now readable:
sudo dd if=${DEV} of=/dev/null bs=512 count=1 skip=${SEC}
If the sector is now readable this command should not report an input/output error.
If more than one problem sector is listed, set the SEC environment variable to the next sector in the list:
SEC=123456789
Repeat from step 8.
Repair the filesystem:
sudo xfs_repair ${FS}
If
xfs_repair
reports that the filesystem has valuable filesystem changes:sudo xfs_repair ${FS} Phase 1 - find and verify superblock... Phase 2 - using internal log - zero log... ERROR: The filesystem has valuable metadata changes in a log which needs to be replayed. Mount the filesystem to replay the log, and unmount it before re-running xfs_repair. If you are unable to mount the filesystem, then use the -L option to destroy the log and attempt a repair. Note that destroying the log may cause corruption -- please attempt a mount of the filesystem before doing this.
You should attempt to mount the filesystem, and clear the lost+found area:
sudo mount $FS /mnt sudo rm -rf /mnt/lost+found/* sudo umount /mnt
If the filesystem fails to mount then you will need to use the
xfs_repair -L
option to force log zeroing. Repeat step 11.If
xfs_repair
reports that an additional input/output error has been encountered, get the sector details as follows:sudo grep "I/O error" /var/log/kern.log | grep sector | tail -1
If new input/output error is reported then set the SEC environment variable to the problem sector number:
SEC=234567890
Repeat from step 8
Remount the filesystem and restart swift and rsync.
- If all UREs in the kern.log have been fixed and you are still unable to have xfs_repair disk, it is possible that the URE’s have corrupted the filesystem or possibly destroyed the drive altogether. In this case, the first step is to re-format the filesystem and if this fails, get the disk replaced.
Diagnose: High system latency¶
Note
The latency measurements described here are specific to the HPE Helion Public Cloud.
- A bad NIC on a proxy server. However, as explained above, this usually causes the peak to rise, but average should remain near normal parameters. A quick fix is to shutdown the proxy.
- A stuck memcache server. Accepts connections, but then will not respond.
Expect to see timeout messages in
/var/log/proxy.log
(port 11211). Swift Diags will also report this as a failed node/port. A quick fix is to shutdown the proxy server. - A bad/broken object server can also cause problems if the accounts used by the monitor program happen to live on the bad object server.
- A general network problem within the data canter. Compare the results with the Pingdom monitors to see if they also have a problem.
Diagnose: Interface reports errors¶
Should a network interface on a Swift node begin reporting network errors, it may well indicate a cable, switch, or network issue.
Get an overview of the interface with:
sudo ifconfig eth{n}
sudo ethtool eth{n}
The Link Detected:
indicator will read yes
if the nic is
cabled.
Establish the adapter type with:
sudo ethtool -i eth{n}
Gather the interface statistics with:
sudo ethtool -S eth{n}
If the nick supports self test, this can be performed with:
sudo ethtool -t eth{n}
Self tests should read PASS
if the nic is operating correctly.
Nic module drivers can be re-initialised by carefully removing and re-installing the modules (this avoids rebooting the server). For example, mellanox drivers use a two part driver mlx4_en and mlx4_core. To reload these you must carefully remove the mlx4_en (ethernet) then the mlx4_core modules, and reinstall them in the reverse order.
As the interface will be disabled while the modules are unloaded, you must be very careful not to lock yourself out so it may be better to script this.
Diagnose: Hung swift object replicator¶
A replicator reports in its log that remaining time exceeds
100 hours. This may indicate that the swift object-replicator
is stuck and not
making progress. Another useful way to check this is with the
‘swift-recon -r’ command on a swift proxy server:
sudo swift-recon -r
===============================================================================
--> Starting reconnaissance on 384 hosts
===============================================================================
[2013-07-17 12:56:19] Checking on replication
[replication_time] low: 2, high: 80, avg: 28.8, total: 11037, Failed: 0.0%, no_result: 0, reported: 383
Oldest completion was 2013-06-12 22:46:50 (12 days ago) by <IP_ADDRESS>:6200.
Most recent completion was 2013-07-17 12:56:19 (5 seconds ago) by <IP_ADDRESS>:6200.
===============================================================================
The Oldest completion
line in this example indicates that the
object-replicator on swift object server <IP_ADDRESS> has not completed
the replication cycle in 12 days. This replicator is stuck. The object
replicator cycle is generally less than 1 hour. Though an replicator
cycle of 15-20 hours can occur if nodes are added to the system and a
new ring has been deployed.
You can further check if the object replicator is stuck by logging on the object server and checking the object replicator progress with the following command:
# sudo grep object-rep /var/log/swift/background.log | grep -e "Starting object replication" -e "Object replication complete" -e "partitions rep"
Jul 16 06:25:46 <IP_ADDRESS> object-replicator 15344/16450 (93.28%) partitions replicated in 69018.48s (0.22/sec, 22h remaining)
Jul 16 06:30:46 <IP_ADDRESS>object-replicator 15344/16450 (93.28%) partitions replicated in 69318.58s (0.22/sec, 22h remaining)
Jul 16 06:35:46 <IP_ADDRESS> object-replicator 15344/16450 (93.28%) partitions replicated in 69618.63s (0.22/sec, 23h remaining)
Jul 16 06:40:46 <IP_ADDRESS> object-replicator 15344/16450 (93.28%) partitions replicated in 69918.73s (0.22/sec, 23h remaining)
Jul 16 06:45:46 <IP_ADDRESS> object-replicator 15348/16450 (93.30%) partitions replicated in 70218.75s (0.22/sec, 24h remaining)
Jul 16 06:50:47 <IP_ADDRESS>object-replicator 15348/16450 (93.30%) partitions replicated in 70518.85s (0.22/sec, 24h remaining)
Jul 16 06:55:47 <IP_ADDRESS> object-replicator 15348/16450 (93.30%) partitions replicated in 70818.95s (0.22/sec, 25h remaining)
Jul 16 07:00:47 <IP_ADDRESS> object-replicator 15348/16450 (93.30%) partitions replicated in 71119.05s (0.22/sec, 25h remaining)
Jul 16 07:05:47 <IP_ADDRESS> object-replicator 15348/16450 (93.30%) partitions replicated in 71419.15s (0.21/sec, 26h remaining)
Jul 16 07:10:47 <IP_ADDRESS>object-replicator 15348/16450 (93.30%) partitions replicated in 71719.25s (0.21/sec, 26h remaining)
Jul 16 07:15:47 <IP_ADDRESS> object-replicator 15348/16450 (93.30%) partitions replicated in 72019.27s (0.21/sec, 27h remaining)
Jul 16 07:20:47 <IP_ADDRESS>object-replicator 15348/16450 (93.30%) partitions replicated in 72319.37s (0.21/sec, 27h remaining)
Jul 16 07:25:47 <IP_ADDRESS> object-replicator 15348/16450 (93.30%) partitions replicated in 72619.47s (0.21/sec, 28h remaining)
Jul 16 07:30:47 <IP_ADDRESS> object-replicator 15348/16450 (93.30%) partitions replicated in 72919.56s (0.21/sec, 28h remaining)
Jul 16 07:35:47 <IP_ADDRESS> object-replicator 15348/16450 (93.30%) partitions replicated in 73219.67s (0.21/sec, 29h remaining)
Jul 16 07:40:47 <IP_ADDRESS> object-replicator 15348/16450 (93.30%) partitions replicated in 73519.76s (0.21/sec, 29h remaining)
The above status is output every 5 minutes to /var/log/swift/background.log
.
Note
The ‘remaining’ time is increasing as time goes on, normally the time remaining should be decreasing. Also note the partition number. For example, 15344 remains the same for several status lines. Eventually the object replicator detects the hang and attempts to make progress by killing the problem thread. The replicator then progresses to the next partition but quite often it again gets stuck on the same partition.
One of the reasons for the object replicator hanging like this is filesystem corruption on the drive. The following is a typical log entry of a corrupted filesystem detected by the object replicator:
# sudo bzgrep "Remote I/O error" /var/log/swift/background.log* |grep srv | - tail -1
Jul 12 03:33:30 <IP_ADDRESS> object-replicator STDOUT: ERROR:root:Error hashing suffix#012Traceback (most recent call last):#012 File
"/usr/lib/python2.7/dist-packages/swift/obj/replicator.py", line 199, in get_hashes#012 hashes[suffix] = hash_suffix(suffix_dir,
reclaim_age)#012 File "/usr/lib/python2.7/dist-packages/swift/obj/replicator.py", line 84, in hash_suffix#012 path_contents =
sorted(os.listdir(path))#012OSError: [Errno 121] Remote I/O error: '/srv/node/disk4/objects/1643763/b51'
An ls
of the problem file or directory usually shows something like the following:
# ls -l /srv/node/disk4/objects/1643763/b51
ls: cannot access /srv/node/disk4/objects/1643763/b51: Remote I/O error
If no entry with Remote I/O error
occurs in the background.log
it is
not possible to determine why the object-replicator is hung. It may be
that the Remote I/O error
entry is older than 7 days and so has been
rotated out of the logs. In this scenario it may be best to simply
restart the object-replicator.
Stop the object-replicator:
# sudo swift-init object-replicator stop
Make sure the object replicator has stopped, if it has hung, the stop command will not stop the hung process:
# ps auxww | - grep swift-object-replicator
If the previous ps shows the object-replicator is still running, kill the process:
# kill -9 <pid-of-swift-object-replicator>
Start the object-replicator:
# sudo swift-init object-replicator start
If the above grep did find an Remote I/O error
then it may be possible
to repair the problem filesystem.
Stop swift and rsync:
# sudo swift-init all shutdown # sudo service rsync stop
Make sure all swift process have stopped:
# ps auxww | grep swift | grep python
Kill any swift processes still running.
Unmount the problem filesystem:
# sudo umount /srv/node/disk4
Repair the filesystem:
# sudo xfs_repair -P /dev/sde1
If the
xfs_repair
fails then it may be necessary to re-format the filesystem. See Procedure: Fix broken XFS filesystem. If thexfs_repair
is successful, re-enable chef using the following command and replication should commence again.
Diagnose: High CPU load¶
The CPU load average on an object server, as shown with the ‘uptime’ command, is typically under 10 when the server is lightly-moderately loaded:
$ uptime
07:59:26 up 99 days, 5:57, 1 user, load average: 8.59, 8.39, 8.32
During times of increased activity, due to user transactions or object replication, the CPU load average can increase to to around 30.
However, sometimes the CPU load average can increase significantly. The following is an example of an object server that has extremely high CPU load:
$ uptime
07:44:02 up 18:22, 1 user, load average: 407.12, 406.36, 404.59
Further issues and resolutions¶
Note
The urgency levels in each Action column indicates whether or not it is required to take immediate action, or if the problem can be worked on during business hours.
| Scenario | Description | Action |
|---|---|---|
/healthcheck latency is high. |
The /healthcheck test does not tax the proxy very much so any drop in value is probably related to
network issues, rather than the proxies being very busy. A very slow proxy might impact the average
number, but it would need to be very slow to shift the number that much. |
Check networks. Do a Urgency: If there are other indications that your system is slow, you should treat this as an urgent problem. |
| Swift process is not running. | You can use swift-init status to check if swift processes are running on any
given server. |
Run this command: sudo swift-init all start
Examine messages in the swift log files to see if there are any
error messages related to any of the swift processes since the time you
ran the Take any corrective actions that seem necessary. Urgency: If this only affects one server, and you have more than one, identifying and fixing the problem can wait until business hours. If this same problem affects many servers, then you need to take corrective action immediately. |
| ntpd is not running. | NTP is not running. | Configure and start NTP. Urgency: For proxy servers, this is vital. |
| Host clock is not syncd to an NTP server. | Node time settings does not match NTP server time. This may take some time to sync after a reboot. | Assuming NTP is configured and running, you have to wait until the times sync. |
| A swift process has hundreds, to thousands of open file descriptors. | May happen to any of the swift processes.
Known to have happened with a rsyslod restart and where /tmp was hanging. |
Restart the swift processes on the affected node: % sudo swift-init all reload
|
| A swift process is not owned by the swift user. | If the UID of the swift user has changed, then the processes might not be owned by that UID. | Urgency: If this only affects one server, and you have more than one, identifying and fixing the problem can wait until business hours. If this same problem affects many servers, then you need to take corrective action immediately. |
| Object account or container files not owned by swift. | This typically happens if during a reinstall or a re-image of a server that the UID of the swift user was changed. The data files in the object account and container directories are owned by the original swift UID. As a result, the current swift user does not own these files. | Correct the UID of the swift user to reflect that of the original UID. An alternate action is to change the ownership of every file on all file systems. This alternate action is often impractical and will take considerable time. Urgency: If this only affects one server, and you have more than one, identifying and fixing the problem can wait until business hours. If this same problem affects many servers, then you need to take corrective action immediately. |
| A disk drive has a high IO wait or service time. | If high wait IO times are seen for a single disk, then the disk drive is the problem. If most/all devices are slow, the controller is probably the source of the problem. The controller cache may also be miss configured – which will cause similar long wait or service times. | As a first step, if your controllers have a cache, check that it is enabled and their battery/capacitor is working. Second, reboot the server. If problem persists, file a DC ticket to have the drive or controller replaced. See Diagnose: Slow disk devices on how to check the drive wait or service times. Urgency: Medium |
| The network interface is not up. | Use the ifconfig and ethtool commands to determine the network state. |
You can try restarting the interface. However, generally the interface (or cable) is probably broken, especially if the interface is flapping. Urgency: If this only affects one server, and you have more than one, identifying and fixing the problem can wait until business hours. If this same problem affects many servers, then you need to take corrective action immediately. |
| Network interface card (NIC) is not operating at the expected speed. | The NIC is running at a slower speed than its nominal rated speed. For example, it is running at 100 Mb/s and the NIC is a 1Ge NIC. |
sudo ethtool -s eth0 speed 1000
... and then run: sudo lshw -class
See if size goes to the expected speed. Failing that, check hardware (NIC cable/switch port).
Urgency: High |
| The interface RX/TX error count is non-zero. | A value of 0 is typical, but counts of 1 or 2 do not indicate a problem. |
Urgency: High, if the error count increasing. |
| In a swift log you see a message that a process has not replicated in over 24 hours. | The replicator has not successfully completed a run in the last 24 hours. This indicates that the replicator has probably hung. | Use Urgency: Low. However if you recently added or replaced disk drives then you should treat this urgently. |
| Container Updater has not run in 4 hour(s). | The service may appear to be running however, it may be hung. Examine their swift logs to see if there are any error messages relating to the container updater. This may potentially explain why the container is not running. | Urgency: Medium This may have been triggered by a recent restart of the rsyslog daemon. Restart the service with: .. code: sudo swift-init <service> reload
|
| Object replicator: Reports the remaining time and that time is more than 100 hours. | Each replication cycle the object replicator writes a log message to its log reporting statistics about the current cycle. This includes an estimate for the remaining time needed to replicate all objects. If this time is longer than 100 hours, there is a problem with the replication process. | Urgency: Medium Restart the service with: .. code: sudo swift-init object-replicator reload
Check that the remaining replication time is going down. |


Marquez wins season-ending MotoGP at Valencia
Valencia - World champion Marc Marquez clinched his 12th MotoGP victory of the season in Sunday's final race in Valencia ahead of French rookie Fabio Quartararo.
Marquez, who secured his sixth premier category title last month, finished over a second clear of pole-sitter Quartararo who came second for the fifth time in his debut campaign.
The Spaniard made a poor start from second place on the grid but steadily picked off his rivals one by one to win at Valencia for just the second time in his career.
"It's been a difficult weekend because we've tried new things," said Marquez, who took his 56th MotoGP win. "It's a perfect season which will be difficult to repeat."
Australian's Jack Miller claimed third while triple MotoGP champion Jorge Lorenzo bid farewell to the sport with a 13th-place finish in his final race.
The 32-year-old Spaniard announced his decision to retire on Thursday. He could be replaced by Marquez's younger brother and Moto2 champion Alex at Honda next season.
Quartararo again fell just short in his bid to become the first Frenchman to win a MotoGP race since 1999, but the 20-year-old was delighted with his first season among the elite.
"Nobody could have imagined at the start of the season that I would have six pole positions and seven podiums. It's incredible to finish the season in this way," said Quartararo, who ended fifth in the overall standings.
British rider Cal Crutchlow and Frenchman Johann Zarco, LCR Honda team-mates also with thoughts of an upgrade next year, crashed out prematurely Sunday.
Crutchlow went down before Zarco, cut loose by KTM earlier this season, was sent skidding by 19-year-old Spanish debutant Iker Lecuona who followed the Frenchman to the deck.
Zarco was examined by on-site medics before gingerly limping back to his team stable.
Lecuona was filling in for the KTM Tech team in place of Miguel Oliveira, who was injured in the last race in Australia.
Valentino Rossi, showing no signs of wanting to retire at the age of 40, rounded out his season by coming eighth. The Italian, a seven-time MotoGP champion, finished seventh overall.
Compatriot Andrea Dovizioso, second in the championship behind Marquez for the third year running, took fourth at the Ricardo Tormo circuit.
South Africa's Brad Binder concluded the Moto2 season with his third successive win to finish runner-up. He will also make the step up to the top level with KTM next year.
Valencia native Sergio Garcia, 16, won for the first time in Moto3 as he pipped Italy's Andrea Migno to the line in a race shortened after a series of crashes.
Results and standings after the Valencia MotoGP, the last of the 19-round world championship series, on Sunday:
1. Marc Marquez (ESP/Honda) 41min 21.469sec, 2. Fabio Quartararo (FRA/Yamaha-SRT) at 1.026sec, 3. Jack Miller (AUS/Ducati-Pramac) 2.409, 4. Andrea Dovizioso (ITA/Ducati) 3.326, 5. Alex Rins (ESP/Suzuki) 3.508, 6. Maverick Vinales (ESP/Yamaha) 8.829, 7. Joan Mir (ESP/Suzuki) 10.622, 8. Valentino Rossi (ITA/Yamaha) 22.992, 9. Aleix Espargaro (ESP/Aprilia) 32.704, 10. Pol Espargaro (ESP/KTM) 32.973
Selected:
13. Jorge Lorenzo (ESP/Honda) 51.044
Did not finish: Cal Crutchlow (GBR/LCR-Honda), Franco Morbidelli (ITA/Yamaha-SRT), Danilo Petrucci (ITA/Ducati), Johann Zarco (FRA/LCR-Honda), Iker Lecuona (ESP/KTM)
World championship standings
1. Marc Marquez (ESP/Honda) 420 pts, 2. Andrea Dovizioso (ITA/Ducati) 269, 3. Maverick Vinales (ESP/Yamaha) 211, 4. Alex Rins (ESP/Suzuki) 205, 5. Fabio Quartararo (FRA/Yamaha-SRT) 192, 6. Danilo Petrucci (ITA/Ducati) 176, 7. Valentino Rossi (ITA/Yamaha) 174, 8. Jack Miller (AUS/Ducati-Pramac) 165, 9. Cal Crutchlow (GBR/Honda-LCR) 133, 10. Franco Morbidelli (ITA/Yamaha-SRT) 115
Selected:
19. Jorge Lorenzo (ESP/Honda) 28
Moto2
1. Brad Binder (RSA/KTM) 25min 30.766, 2. Thomas Luthi (SUI/Kalex) at 0.735sec, 3. Jorge Navarro (ESP/Speed Up) 1.045, 4. Stefano Manzi (ITA/MV Agusta) 1.185, 5. Jorge Martin (ESP/KTM) 8.066
Overall standings
1. Alex Marquez (ESP/Kalex) 262 pts, 2. Brad Binder (RSA/KTM) 259, 3. Thomas Luthi (SUI/Kalex) 250, 4. Jorge Navarro (ESP/Speed Up) 226, 5. Augusto Fernandez (ESP/Kalex) 207
Moto3
1. Sergio Garcia (ESP/Honda) 25min 17.918sec, 2. Andrea Migno (ITA/KTM) 0.005sec, 3. Xavier Artigas (ESP/Honda) 0.180, 4. Tatsuki Suzuki (JPN/Honda) 0.246, 5. Filip Salac (CZE/KTM) 0.328
Overall standings
1. Lorenzo Dalla Porta (ITA/Honda) 279 pts, 2. Aron Canet (ESP/KTM) 200, 3. Marcos Ramirez (ESP/Honda) 183, 4. Tony Arbolino (ITA/Honda) 175, 5. John McPhee (GBR/Honda) 156 pts


--- creation_epoch:<PHONE_NUMBER> lastmod_epoch:<PHONE_NUMBER> categories: ['Computer Problems'] title: Blackberry, Can't add member to group --- I was trying to create a group in my Blackberry to group my contacts into different areas. When I got to the "Select Address" screen it would not allow me to select anything. Instead clicking the scroll wheel just brought up the contact for editing.
The problem is a "group" is really meant for e-mail groups. If the contact doesn't have an e-mail address then you can't add it to a group. I'm going to try categories instead.


| Archive window |
The major components of the archive window are:
- TreeView
- Context menu
- LogView
- Toolbar
- Infobar
- Menubar (<System>, File, Edit, Actions, Settings, <archiver>, Windows)
Inorder to work with archives you must be familiar with the archive window:
Beezer reserves an archive window for every archive you open. The archive window is written in such a way that it always remains as responsive as possible rather than locking up during long operations.
TreeViewLogView Toolbar
The logview (also called Action Log) is a textual information area that updates you with relevant information regarding a process and its result. It's like a status bar with a history. The logview may also come in handy when you want to see whether or not you have performed an action before. It's a simple log that is not saved to the harddisk. Hence, once you close the archive the logview's information is lost.
Right-clicking the logview invokes a menu that allows you to retain its contents or clear the logview's data.
The logview can be hidden using Settings –> Action Log command. You can resize the logview by clicking and dragging the dotted-space between the logview and the Treeview. This space is referred to as "dragger". You can change the logview's position (orientation) by right-clicking the dragger - i.e. from vertical to a horizontal position and vice versa.
Infobar
The toolbar is a set of buttons that contains the most frequently used commands for easy access. The toolbar can be hidden by right-clicking space not occupied by a toolbar button (an empty space) or the space at the far end of the toolbar. You can also hide the toolbar from Settings –> Toolbar. Each of the toolbar buttons are described.
Allows you to create a new archive.
Allows you to open an existing archive. Clicking on the context portion, invokes a popup menu allowing you to open a recently opened archive.
Closes the archive. If it's the last archive to be closed either the Welcome window will be shown or Beezer will quit - depending on the settings in Preferences.
Brings up the Search window from where you can search the Treeview.
Extracts the archive to default extract location (if any). Click here for more info.
Opens the selected file using the application that is associated with the file. Click here for more info.
Allows you to add files and folders to an archive. This button may be disabled for certain types of archives. Click here for more info.
Allows you to delete the selected entries from an archive. Click here for more info.
Menubar
The Infobar displays information regarding the selected entries (files & folders). You can show/hide the Infobar by right-clicking on it. You can also show/hide it from Settings –> Infobar.
The first 'slot' in the Infobar, displays the number of selected entries as against the total entries in the archive. For example, "6/229" indicates that 6 entries are selected from a total of 229 entries in the archive.
The next portion of the Infobar, displays the total size of the selected entries as against the total size of the archive (in bytes). It also shows how much percent of the archive size is selected.
The thing to remember is that, the display does NOT go deep into folders. As you must be aware by now, selecting a collapsed (folded) folder in the archive does NOT select the entries inside the selected folder. The Infobar thus shows only what is selected.
The menubars are like in any other Haiku application. The menus are explained below
< System >
- Help: Opens this manual
- About Beezer: Displays developer information, copyright and credits
- Quit: Closes all open windows & quits Beezer
File
- New: Allows you to create new archives. See Creating archives for more info
- Open: Open an existing archive (sub-menu contains recent archives)
- Close: Close the current window
- Delete: Allows you to delete the archive. See Deleting archives for more info
- Archive Info: Shows archive info. See Archive info for more info
- Password: If the archive type supports a password, this is where you set it
Edit
- Copy: Either copy the selected archive entries or selected log-view text to the clipboard
- Select All: Selects all visible entries in the archive, sub-menu does as it says :)
- Deselect All: Deselects any selected entry from the treeview
- Invert Selection: Selects what is not selected and vice versa in one operation
- Expand All: Unfolds (expands) all folder entries
- Expand Selected: Unfolds (expands) all the folder entries in the selection
- Collapse All: Folds (collapses) all folder entries
- Collapse Selected: Folds (collapses) all the folder entries in the selection
- Preferences: Opens up Beezer's preferences
Actions
- Extract: See Extracting archives for more info
- Extract To: See Extracting archives for more info
- Extract Selected: See Extracting archives for more info
- View File: See Viewing files for more info
- Open With: See Viewing files for more info
- Test: See Testing archives for more info
- Search Archive: See Searching archives for more info
- Comment: See Comments for more info
- Delete: See Deleting files for more info
- Create Folder:See Creating folders for more info
- Add: See Adding files for more info
Tools
- File Splitter: See File Splitter for more info
- File Joiner: See File Joiner for more info
Settings
- Save as Defaults: Saves the current interface settings as the default settings, so that next time an archive (without interface settings) is opened, these settings would be used
- Save to Archive: Saves the current interface settings to the archive. The next time the archive is opened (and if permitted by Preferences) the settings will be restored. Please note that these settings tend to increase the size of the archive by a few bytes. Also they work only on BFS volumes as attributes are used.
- Toolbar: Hide/Show the toolbar
- Infobar: Hide/Show the infobar
- Action Log: Hide/Show the action log
- Columns: Hide/Show columns in the treeview
- While Opening: Allows you to set the level of folded (collapsed) folders while loading the archive. The more folded, the faster the archive loads but for working with archives you may need to expand them once loading is done. Generally if you only extract archives, you can keep the folding level to 1 or all folded.
< archiver >
The archiver menu is a dynamically created menu. It contains the settings used by the archive format. For example, zip add-on creates a "zip" settings menu having options specific to the zip format. Thus, the archiver menu varies in it's options for each archive format. Some archive formats may not even have such a menu.For other options, refer the "Miscellaneous Info" sections for help on the appropriate add-on's options.
- Save as Defaults: Saves the current archiver settings as defaults. The next time an archive of this type is opened, these settings would be used
- Save to Archive: Saves the current archiver settings to the archive. The next time the archive is opened (and if permitted by Preferences) the settings will be restored. Please note that these settings tend to increase the size of the archive by a few KiB. Also they work only on BFS volumes as attributes are used.
Windows
Gives you a list of archives that are currently open. The first 10 archives have shortcut keys. Such as COMMAND + N, where "n" is from 0 to 9. You can quickly switch between archives using these shortcuts. Selecting one of them activates it. The currently active window is indicated by a mark.
| Creating Archives | Extracting Archives |


English description | Описание на русском
Ion.RangeSlider. Is an easy, flexible and responsive range slider with tons of options.
Description
- Ion.RangeSlider — cool, comfortable, responsive and easily customizable range slider
- Supports events and public methods, has flexible settings, can be completely altered with CSS
- Cross-browser: Google Chrome, Mozilla Firefox 3.6+, Opera 12+, Safari 5+, Internet Explorer 8+
- Ion.RangeSlider supports touch-devices (iPhone, iPad, Nexus, etc.).
- Ion.RangeSlider freely distributed under terms of MIT licence.
- With this plugin you will be able to build beautiful range sliders, like this:
Key features
- Skin support. (5 skins included and PSD for skin creation)
- Any number of sliders at one page without conflicts and big performance problems
- Two slider types single (1 slider) and double (2 sliders)
- Support of negative and fractional values
- Ability to set custom step and snap grid to step
- Support of custom values diapason
- Customisable grid of values
- Ability to disable UI elements (min and max, current value, grid)
- Postfixes and prefixes for your numbers ($20, 20 € etc.)
- Additional postfix for maximum value (eg. $0 — $100+)
- Ability to prettify large numbers (eg. 10000000 -> 10 000 000 or 10.000.000)
- Slider writes its value right into input value field. This makes it easy to use in any html form
- Any slider value can be set through input data-attribute (eg. data-min="10")
- Slider supports disable param. You can set it true to make slider inactive
- Slider supports external methods (update, reset and remove) to control it after creation
- For advanced users slider has callbacks (onStart, onChange, onFinish, onUpdate). Slider pastes all its params to callback first argument as object
- Slider supports date and time
Demos
GitHub
Support the plugin:


We enhance cats!
- architect sexy experiences
- optimize proactive eyeballs
- target compelling platforms
- empower proactive e-services
- deploy frictionless communities
- visualize e-business vortals
- enable open-source synergies
- redefine world-class supply-chains
- architect interactive niches
- whiteboard intuitive platforms
- reintermediate interactive convergence
- grow impactful architectures
- transform front-end eyeballs


He lives in Ireland and was born in the year of the The Goonies.
He's available via e—mail david＠higg.im.
Save to address book
And he doesn't like to talk in the third person.
this page is part of higg.so


Deep learning based computer vision algorithms have surpassed the human-level performance for many CV tasks, like object recognition and face verification. However, computer vision technology relies on the valid information from the input image and video, and the performance of the algorithm is essentially constrained by the quality of source image/video. Along with the emergence of gigapixel-level image/video, the corresponding computer vision tasks remain unsolved, due to the extremely high-resolution, large-scale, huge-data that induced by the gigapixel camera.
This task is intended to evaluate the ability of algorithms to estimate the crowd density map in a complex scenario. For this task, participants will use our Gigapixel Video Dataset, a new resource with high spatial resolution and wide FOV simultaneously for computer vision challenges.
Our crowd counting datasets will be used for this task. This dataset consists of 65 representative images from the train station and the shanghai marathon sequences. These images are saved in JPEG format with more than 200K heads and always have a resolution of 32000x24000 or 27000x15000. We will release more labeled data in the future.
Invalid Area
Limited by the resolution, sometimes even human can not clearly count the exact number of people in some far places. Therefore, we have delineated some invalid areas which are considered artificially unrecognizable and have no groundtruth label.
| Dataset | Image Size | Invalid Area |
|---|---|---|
| shanghai_marathon | 26908 × 15024 | 1 ≤ x ≤ 26908, 1 ≤ y ≤ 6670 |
| train_station | 26558 × 14828 | 1 ≤ x ≤ 26558, 1 ≤ y ≤ 5130 |
Note: The top left pixel is set to the origin of the coordinates (x = 1, y = 1).
The groundtruth labels are saved in .json files. Each pair of x and y coordinates represents a head position. The top left pixel is (1,1).
{ "JPG_FILE_PATH":[ {"x": x_coordinate, "y": x_coordinate }, {"x": x_coordinate, "y": x_coordinate }, ... ], ... }
The crowd distribution of this crowd counting task is represented by crowd number vector. First, the whole image will be divided into 1x1, 4x4, 8x8 blocks. After that, the number of human in each block will be estimated. Finally, the crowd number vector is generated from the estimate human number of these blocks. Meanwhile, two classical result evaluation indexes, MAE and MSE, are also selected as metrics in our evaluation process.
Three kinds of errors will be calculated from the crowd number vector (g represents the groundtruth crowd number vector):
Meanwhile, two classical result evaluation indexes, MAE and MSE, are also selected as metrics in our evaluation process.
Here, we provide a toolbox to evaluate results of models and visualize annotations. Website: https://github.com/GigaVision/CrowdCountingTools.
When using our datasets in your research, we will be happy if you cite us! For all of the datasets, please cite:
@inproceedings{yuan2017multiscale, title={Multiscale gigapixel video: A cross resolution image matching and warping approach}, author={Yuan, Xiaoyun and Fang, Lu and Dai, Qionghai and Brady, David J and Liu, Yebin}, booktitle={Computational Photography (ICCP), 2017 IEEE International Conference on}, pages={1--9}, year={2017}, organization={IEEE} }
This dataset is for non-commercial use only. However, if you find yourself or your personal belongings in the data, please contact us, and we will immediately remove the respective images from our servers.
In this track, other dataset such as ShanghaiTech crowd counting dataset (https://github.com/desenzhou/ShanghaiTechDataset) can be used for training, too.


{% extends "base.html" %}
{% load model_tags %}
{% block title %}{{ pepulator }}{% endblock %}
{% block content %}
{% comment %}
#
# This template is rendered a little differently than the default. For a
# plain template, see distributor_detail.html. This one is special because
# it replaces the default template for a sub-component of the Pepulator
# model with a custom one. That's how the images get on the page. For more
# information, see the "pepulator_factory/knuckle_detail.html" template.
#
{% endcomment %}
{% with pepulator_factory_knuckle_detail_template="pepulator_factory/knuckle_detail.html" %}
{% detail_block pepulator %}
{% endwith %}
{% endblock %}


--- date: 2011-01-04T00:00:00Z published: true title: Not everything you read online is true. url: /2011/01/04/not-everything-you-read-online-is-true-/ ---
I read somewhere online that part of King Tut's curse meant that you had to wear a pink tutu for the rest of your life. This is supported by many scholars and is documented extensively in the archaeological literature.
PS - explaining to your kids that not everything that's online is true is hard.


RCircos: Circos 2D Track Plot
A simple and flexible way to generate Circos 2D track plot images for genomic data visualization is implemented in this package. The types of plots include: heatmap, histogram, lines, scatterplot, tiles and plot items for further decorations include connector, link (lines and ribbons), and text (gene) label. All functions require only R graphics package that comes with R base installation.
Downloads:
Reverse dependencies:
Linking:
Please use the canonical form
https://CRAN.R-project.org/package=RCircos
to link to this page.


| Author | Pablo Deelman |
| Publisher | Packt |
| ISBN | #126 |
| Year | 2017 |
| Pages | 180 |
Type someJust beyond the Gilded Age, in the mist-covered streets of New York, the deadly Spanish influenza ripples through the city. But with so many victims in her close circle, young socialite Allene questions if the flu is really to blame. All appear to have been poisoned—and every death was accompanied by a mysterious note.thing
Expected Return Date
21st July 2017
*Failure to return this book on this date attracts a penalty*
**success message here**


local_airport
Flowers, ink
local_airport
Flowers, ink
Home
Login
Signin
menu
Login
User id
Password
Login


Torrents:
Downloading:
Seeding:
Paused/Completed:
DL:
UL:
All
Active
Downloading
Seeding
Paused/Completed
No torrents
Upload Basket
Full Web Interface


Natural Language tool/dialog manager
ChatScript Wiki (user guides, tutorials, papers)
ChatScript is the next generation chatbot engine that has won the Loebner's 4 times and is the basis for natural language company for a variety of tech startups.
See BrilligUnderstanding.com for our home website.
Powerful pattern matching aimed at detecting meaning.
Simple rule layout combined with C-style general scripting.
Built-in WordNet dictionary for ontology and spell-checking.
Extensive extensible ontology of nouns, verbs, adjectives, adverbs.
Data as fact triples enables inferencing.
Rules can examine and alter engine and script behavior.
Planner capabilities allow a bot to act in real/virtual worlds.
Remembers user interactions across conversations.
Document mode allows you to scan documents for content.
Ability to control local machines via popen.
Ability to read structured JSON data from websites.
Postgres and Mongo support for big data or large-user-volume chatbots.
Runs on Windows or Linux or Mac or iOS or Android
Fast server performance supports a thousand simultaneous users.
Multiple bots can cohabit on the same server.
Mature technology in use by various parties around the world.
Integrated tools to support maintaining and testing large systems.
UTF8 support allows scripts written in any language
User support forum on Chatbots.org
Take this project and put it into some directory on your machine (typically we call the directory ChatScript, but you can name it whatever). That takes care of installation.
 This will cause ChatScript to load and ask you for a username. Enter whatever you want. You are then talking to the default demo bot Harry
.
 This will cause ChatScript to load as a server. But you also need a client. You can run a separate command window and go to the BINARIES directory and type ChatScript client=localhost:1024
if you are on Windows, or type ./LinuxChatScript64 client=localhost:1024
if you are on Linux. This will cause ChatScript to load as a client and you can talk to the server.
On windows if you have Visual Studio installed, launch VS2010/chatscript.sln or VS2015/chatscript.sln and do a build. The result will go in the BINARIES directory.
On Linux, go stand in the SRC directory and type make server
(assuming you have make and g++ installed). This creates BINARIES/ChatScript, which can run as a server or locally. There are other make choices for installing PostGres or Mongo.
Run ChatScript locally. From the command prompt, type ':build Harry' or whatever other preinstalled bot exists. If you have revised basic data, you can first do ':build 0' .


Class GraphParser
source code
OpenVX graph parser class
Uses a minidom parser to parse the input file specified by the
filename argument.
The first thing that the GraphParser does when it is instansiated is
to parse the XML file provided in the filename argument.
Then the GraphParser creates and populates a number of synched lists
used to store necessary information for the C-code generation
Global graph information is generated and stored in the arrays set up
in the init function. Three main things are needed:
1: Lists of all input/output and internal image nodes id's, where the
list indices correspond to C-array indices for corresponding
C-arrays.
2: Index-synched lists of all the function nodes and their
corresponding OpenVX names as well as a node_info object for every
function node, containing information about all edges (lines) entering or
leaving the function nodes and the nodes they connect to.
3: Separately index-synced lists for all input and output function
nodes and lists with the corresponding first input and output indices in
the parameter list for the node create OpenVX function (as defined in the
standard). An input function node is a function node that has at least
one edge connected to an input image node, and similarly for the output
function nodes. A given function node can technically be present both in
the input- and output function node lists though usually this is not the
case.
After all lists have been created, no mode parsing should be needed,
and the C-code can be generated and written to file, using queries to the
GraphParser methods and its generated lists.
The GraphParser is mainly intended to provide answers about the graph
structure. It ideally should not handle the generation of the actual
C-code. The C-code generating python code uses the Node query methods of
the GraphParser to make decisions on how to generate the C-code based on
the global and local graph node information stored in the
GraphParser.
If the verbose flag is set, the GraphParser will print more detailed
information to the terminal. If the debug_mode flag is set, it will print
even more information.
If the strip_mode flag is set, the GraphParser will generate C-code
without any graphmanager or other libs/vision dependencies.
The function node library contains necessary parametrization
information of the supported function nodes
|
|
Loads the graph definition from file and processes it.
Also initializes the image_nodes and function_nodes objects and
populates them with parsed information from the loaded graph.
|
get_value_for_attribute(self,
node_id,
attribute)
| source code
|
Get the value of a specific image attribute. :param node_id: The id of
the image node. :param attribute: The attribute to get. :return: A tuple
containing (is_userdata, value) where: is_userdata is True if value
contains reference to userdata value is the value of of the attribute or
default value if attribute is not set.
|
|
Get the image format for a specific image node. :param node_id: The id
of the image node. :return: The image format for the image node.
|


RNA viral sequencing purification capture-based direct method OpenUrl used host using CrossRef DENV post-capture capture strategy Table mapping virus adapter primer PCR RNA. added supernatant fold target background cell reads strategies adapters conventional downstream increase min. shown use viruses Science Viral Wash baits coverage enrichment genome incubated study tube Figure However, Web beads concentrated current group high human native performed poly(T) polyadenylation pre-capture sequence Buffer GAPDH MinION Subsequently, genomes library min percentage pre protocol read single total DNA Eppendorf Indeed, RT-qPCR Sessions allows amplification application demonstrated end fourth new novel nuclease-free pipetted poly(A) problem rates reaction reference report required second unassembled viruses. Abstract FREE Keller Methods Nature Text Wongsurawat background. cDNA calculated calling characterization concept custom higher inherent low magnetic observed preparation prior proof properties reported required. respectively. results samples sequencing. significantly strategy. structure successful suggests technique v.. volumes yield (Thermo Capture-based Direct Equation Fisher Ooi Ozsolak RNA, RNA-RNA Scientific) Sequencing Tan Witteveldt able absolute address advantages assays assays. comparison culture dengue design diluted employed error factor foreknowledge genomes. greatly hand however, hybridization incubation isopycnic like lysate media method, methods particles position potentially removed removes retrieve run. specific specificity technologies time unknown variant whilst


| onRender {htmlwidgets} | R Documentation |
Use this function to supplement the widget's built-in JavaScript rendering logic with additional custom JavaScript code, just for this specific widget object.
onRender(x, jsCode, data = NULL)
x |
An HTML Widget object |
jsCode |
Character vector containing JavaScript code (see Details) |
data |
An additional argument to pass to the |
The jsCode
parameter must contain valid JavaScript code which
when evaluated returns a function.
The function will be invoked with three arguments: the first is the widget's
main HTML element, and the second is the data to be rendered (the x
parameter in createWidget
). The third argument is the JavaScript
equivalent of the R object passed into onRender
as the data
argument; this is an easy way to transfer e.g. data frames without having
to manually do the JSON encoding.
When the function is invoked, the this
keyword will refer to the
widget instance object.
The modified widget object
onStaticRenderComplete
, for writing custom JavaScript
that involves multiple widgets.
## Not run: library(leaflet) # This example uses browser geolocation. RStudio users: # this won't work in the Viewer pane; try popping it # out into your system web browser. leaflet() %>% addTiles() %>% onRender(" function(el, x) { // Navigate the map to the user's location this.locate({setView: true}); } ") # This example shows how you can make an R data frame available # to your JavaScript code. meh <- "😐"; yikes <- "😨"; df <- data.frame( lng = quakes$long, lat = quakes$lat, html = ifelse(quakes$mag < 5.5, meh, yikes), stringsAsFactors = FALSE ) leaflet() %>% addTiles() %>% fitBounds(min(df$lng), min(df$lat), max(df$lng), max(df$lat)) %>% onRender(" function(el, x, data) { for (var i = 0; i < data.lng.length; i++) { var icon = L.divIcon({className: '', html: data.html[i]}); L.marker([data.lat[i], data.lng[i]], {icon: icon}).addTo(this); } } ", data = df) ## End(Not run)


navigation: previous | next | index
Summary of section: Participants will write simple tests that automatically check integrity of their files. Also will learn how to create simple change logs of data. We will provide a directory of data for this. Applied to detecting file tampering.
- Getting hashes of a file (md5, sha256), write script to automatically record data hashes.
- Write tests that check that a file has not been changed since last recorded version (i.e. check file hash)
- Write tests that check other basic properties of a data file: number of rows, number of columns, number of words in a text file.
- What to do when file hashes change?


The example is partial and does not contain the real client stuff
The angularjs stuff may be included like this:


Top 5 Picks of The Month
Every month, we hand picked the BEST 5 spots for you to go explore along with a map.
1. Tompkin Square Park
The park is one of the best dog parks in Manhattan. It's absolutely the best place to take a walk on a beautiful sunny day.  The park is located at the heart of East Village with endless cafes, restaurants, thriftshops and bars around. You can get there by taking either the F(2nd Avenue)or L(1st Avenue) trains.
2. Ludlow Coffee Supplies
This cozy yet hip cafe always has the best playlist on whenever you walk in. Looking for somewehre to do work? Ludlow provides free unlimited wifi but try to get there early, it gets filled up pretty quick. You can get there by taking the F(2nd Avenue or Delancey Street) train.
3. CornerStone
Also located in East Village, this cafe/restaurant provides quality food within reasonable price. Two of its most famous dishes are the $4 Penne Vodka and $4 two eggs any style with sala, toasts and homefries. Yes that's right, this place will fill you up with just $4! Tell all your college friends who are struggling to save money on food!
4. The Press Lounge
The lounge has one of the best night views in Manhattan. Although the view is beautiful, the price is not. The average price of cocktails there is about $18. But on the bright side, there's no cover fee! So grab your best friends or strangers(kidding), get ready for a night of spring breeze and view of the city that never sleeps. The lounge is located in the Upper West side, you can get there by taking A C E trains(50th Street).
5. The Blind Barber
And we are back in East Village! This daytime barbershop turns into a speakeasy at night! How cool lit is that?! The dance floor is always popping and the music varies from throw back hip-hop to Billboard top 100. If you're trying to find a place to dance the night away, Blind Barber is definitely the place for you to go. Just remember to get there early, line usually starts forming around 12am. But hey, no cover fee! You can get there by taking the L (1st Avenue)train.
MAP OVER HERE


Simple table with header
| First Name | Last Name |
|---|---|
| John | Doe |
| Jane | Doe |
Table with thead, tfoot, and tbody
| Header content 1 | Header content 2 |
|---|---|
| Foot content 1 | Foot content 2 |
| Body content 1 | Body Content 1 |
Table with colgroup and col
| Countries | Capitals | Population | Language |
|---|---|---|---|
| USA | Washington D.C. | 309 million | English |
| Sweden | Stockholm | 9 million | Swedish |
Table with colgroup and col
| Lime | Lemon | Orange |
|---|---|---|
| Green | Yellow | Orange |
Simple Table with Caption
| Awesome data | Awesome data |
Froms Demo
Do you prefer cats or dogs


@() @main("Mammography form") {
DICOM SR is very important in the medical area since it can be used worldwide. It will certainly improve this area and that's the main reason we wanted to give a step in this direction.
Cadeira RSI, da Universidade de Aveiro.
Pedro Matos
Sofia Pimentel


Keplerian Orbits
Introduction
The Solar System consists of eight planets, together with many smaller bodies,
that orbit the Sun. In addition to our own Solar System, astronomers
have discovered thousands of other extra-solar planets. A catalogue of these
systems can be found here. These new systems are very different from
our familiar Solar System. Most of them are very compact, and most of them orbit inside
the Earth's orbit, while many have orbits closer to their host star. In addition, most
of these discovered exoplanets are Super Earths, or planets that have a mass that of Earth and Neptune. The figures below show the distribution of planet semi major axes and masses for all of the discovered explanets.
The Orbit Simulator
In this activity we will use the Orbit Simulator to discover the relationship
between how long it takes a planet to go around the Sun and how far away that
planet is from the Sun. This is also called Kepler's Third Law.
- Adjust the Planet's semi-major axis using the Semi Major Axis slider.
Note the units of the semi-major axis. What happens when you increase the
distance between the planet and the Sun?
- Using the graph of position versus time in the Orbit Simulator, measure
the period and velocity of your planet for several different semi major axis values. If you
want to use real planets, you can use the Planet Table at the bottom of the page
which summarizes the properties of the Solar System planets as well as some exoplanets.
Make sure to evenly space out your semi major axis choices on the slider.
-
Using your favorite plotting program (I recommend plot.ly),
make a plot of Period vs Semi Major Axis and a plot of Velocity vs Semi Major Axis with the data you've collected.
What does this tell you about the relationship between period and semi-major
axis? Is it a linear relationship? Why or why not? Remember that two variables, x and y,
have a linear relationship if you can write relate them with the equation of a line, y=m*x+b.
-
Next make a plot of the square of the period vs the cube of the semi-major
axis, P2 vs a3 . Does this graph describe a linear relationship?
-
Finally, make a plot of the logarithm of period versus the logarithm of semi-
major axis, Log(P) vs. Log(a) . What is the slope of this line and how does this connect to the
previous question?
-
What is Kepler's Third Law from your data?
-
What is the relationship between Planet Velocity and Semi Major Axis?
Eccentricity Effects
For this activity we will explore the shape of the planet's orbit, and how the
planet's eccentricity affects it.
-
Adjust the eccentricity of the planet using the eccentricity slider. How does
this change the orbit? What shape is this?
-
How does the planet's speed change during the course of an orbit? Does this differ from
what you found in the first activity for a circular orbit?
-
Using the velocity versus position graph, what is the ratio of the speed of
the planet at closest approach (periapse), to farther approach (apoapse) ? What is this
ratio for a circular orbit?
Mass Effects
In this final activity we will be looking at the effects of varying the planet's
mass.
-
What happens as you increase the planet's mass? Does anything interesting happen
to the Sun?
-
Using the radial velocity graph, measure the largest speed of the Sun over
the course of one orbit for different planet masses . How fast does the Sun move
because of Jupiter? How fast is this compared to average walking speed?
Planet Table
Below is a table of the Solar System planets, as well as some exoplanets. Try to set up the orbit of each of the planets in the table and measure their orbital period. You can try out different exoplanets by looking them up here.
| Planet |
Semi Major Axis (Au) |
Eccentricity |
Mass (M⊕) |
| Mercury |
0.39 |
0.21 |
0.055 |
| Venus |
0.72 |
0.0.007 |
0.82 |
| Earth |
1.0 |
0.017 |
1.0 |
| Mars |
1.52 |
0.093 |
0.055 |
| Jupiter |
5.20 |
0.048 |
317.8 |
| Saturn |
9.53 |
0.054 |
95.3 |
| Uranus |
19.19 |
0.046 |
14.6 |
| Neptune |
30.06 |
0.01 |
17.23 |
| HD 1237 b |
0.5 |
0.51 |
>1071 |
| Wasp-14 b |
0.037 |
0.091 |
2444 |
| HD 147018 b |
0.24 |
0.47 |
>674 |
| GJ 649 b |
1.13 |
0.30 |
>103 |


The Soybean (Glycine max (L.) Err.) Growth Stages screen displayed below shows the parameters for the Generic variety. Please see the Growth Stages Example topic for a general description of the growth stages screen.
There are sixteen growth stages for Soybean. The descriptions of the growth stages below came from this University of Wisconsin reference for Soybean.
Seeding to Emergence (E) - germination occurs .The primary root grows downward and the hypocotyl emerges from the soil pulling the two cotyledons with it. The cotyledons are unifoliate leaves. This is also known as VE.
E to Cotyledonary Leaves - the hypocotyl straightens out and the cotyledons unfold and expand. This is the beginning of the VC stage and the vegetative phase.
VC to 1st Trifoliate Leaf (V1) - the first set of two Trifoliate leaves appear. They originate from the second node. The first node was the unifoliolate node.
V1 to 2nd Trifoliate Leaf (V2) - the second set of Trifoliate leaves appear from the third node creating the V2 stage.
V2 to 3rd Trifoliate Leaf (V3) - the third set of Trifoliate leaves appear from the fourth node for the V3 stage.
V4 to 4th Trifoliate Leaf (V4) - the fourth set of Trifoliate leaves appear from the fifth node for the V4 stage.
V4 to 5th Trifoliate Leaf (V5) - the fifth set of Trifoliate leaves appear from the sixth node for the V5 stage. Trifoliate leaves continue to be produced from a new node until VN which is the last node produced. VN is reached at about R5.5. The first branch may develop in the axil of the first trifoliate around the V5 stage.
The Reproductive Stages begin when the plants are in the V7 to V10 stages. Many soybean varieties are indeterminate and will continue to produce leaves in the reproductive phase of development.
Beginning Bloom is the first reproductive stage and is known as R1. Flowering begins on the main stem at the third to the sixth node depending on the V stage of the plant. Flowering then proceeds up and down the main stem from the beginning position of flowering. Branches start to flower a few days after the main stem starts to bloom.
R1 to Full Bloom (R2) - the plant is in the V8 to V12 stages.
R2 to Beginning Pod (R3) - pods begin to form on the lower nodes where the first flowers opened. The plant is typically in the V11 to V17 stages.
R3 to Full Pod (R4) - full pod occurs when there is a pod three quarters of an inch long. It is at one of the four uppermost nodes on the main stem with a fully developed leaf. The plant is now in the V13 to V20 stages.
R4 to Beginning Seed (R5) - the seed begins to grow rapidly in this stage with nutrients in the plant being distributed to the seeds. This is the period of seed filling. The plant is in the V15 to V23 stages.
R5 to Full Seed (R6) - the beans or 'green beans' are as wide as the pod cavity. There are however, beans of all sizes in the pod. The plant is in the V16 to V25 stages. Maximum pod weight on the plant occurs at about R6.
R6 to Beginning Maturity (R7) - beginning maturity is essentially physiological maturity because there will be very little increase in dry weight from now on. The seeds and usually the pod have lost their green color but not all have turned color.
R7 to Full Maturity (R8) - full maturity occurs when 95 percent of the pods have attained their mature pod color.
R8 to Harvest Ready - after Full Maturity, five to ten days of drying weather are needed for the plant to be ready to harvest. The seeds need to have less than 15 percent moisture.
The Back... button will take you back to the previous screen .
The Help... button opens a screen displaying help for this screen.
The Variety drop down list displays several selections based on maturity. The are four general maturity selections for Soybean varieties including Early Maturity, Medium Maturity and Generic which are equivalent, and Late Maturity and a number of varieties base on Maturity Group ranging from MG 000.5 to MG 10.5. in .5 increments.
The Run... button executes the program with the selections that have been chosen.
The Reset button sets all the values in the columns back to their original, default values.
Links to the Phenology Diagram and the Developmental Sequence for Soybean.


Editing {{.Title}}
Recipe Title
Ingredients
{{printf "%s" .Ingredients}}
Instructions
{{printf "%s" .Instructions}}
Cancel
Delete this page?


Udacity (Jan. 2018 - Now)
Nano Degree: Data Analyst Basic&Advanced& Data Scientist
Relevant Courses:
- Basic03: SQL in Data Analysis
- Basic04: Python in Data Analysis
- Basic05: Practical Statistics
- Advanced03: Data Wrangling
- Advanced04: Exploratory Data Analysis
- Advanced05: Data Story Telling
- Scientist: Supervised Learning
- Scientist: Deep Learning
The Academy of Armored Forces Engineering of PLA (Aug. 2014 - Jan. 2017)
Degree: Master of Engineering
- Major: Power Electronics and Power Transmission
- Achievements:
- I am responsible for product design and programming (Python) in three military level projects
as a principal personnel,and these items were selected as excellent projects in military.
- My graduation project is Research and Implementation of Modulation Schemes in Visible Light Communication, and the graduation thesis was selected as an excellent academic thesis.
Xi'an Jiaotong University(Aug. 2010 - July 2014)
Degree: Bachelor of Engineering
- Major: Electrical Engineering
- Achievements: National defense scholarship for four years.


Homestuck POV Cam
Enabled timelines:
Auto-open pesterlogs:
Open pesterlogs
Leave pesterlogs closed
Use arrow keys for navigation:
Use left/right arrow to change page
Use mouse to click on links to change page
Highlight Doc Scratch's text:
Highlight white text
Leave as normal
Flashing of Lord English's links:
Alternate text colour rapidly
Use only one colour for Lord English's links
View pre-retcon pages:
View pre-retcon pages (changes back on hover)
View post-retcon pages only
Add controls to (most) flash pages:
Add controls
Leave as normal


{% extends 'base.html' %} {% block body %}
You have not registered for this contest Click here to Register.


Total submissions: {{(stats | async)?.total | number}}
Submission Breakdown
{{question.title}}
{{answer.answer}} ({{answer.count}})


SEDS is the largest student-run space organisation in the world, with a presence in 23 countries. It is a chapter-based non-profit promoting space exploration and development through student-led engineering projects, events and programmes. Prominent SEDS alumni include Jeff Bezos, Steve Wozniak and Peter Diamandis. NUS SEDS, SEDS-NTU and SEDS-SUTD are constituent clubs of SEDS Earth and SEDS (Singapore).