Table Of Contents
Google Summer of Code - 2015¶
Introduction¶
Kivy is a cross-platform, business friendly, GPU Accelerated open source Python library for rapid development of applications that make use of innovative user interfaces, such as multi-touch apps.
The Kivy Organization oversees several major projects:
- The Kivy GUI Library
- The Python-For-Android compilation tool.
- The Kivy-iOS compilation tool.
- The PyJNIus library for interfacing with Java from Python.
- The PyOBJus library for interfacing with Objective-C from Python.
- The Plyer platform-independent Python wrapper for platform dependent APIs.
- Buildozer - A generic Python packager for Android, iOS, and desktop.
Altogether, these projects allow the user to create applications for every major operating system that make use of any native APIs present. Our goal is to enable development of Python applications that run everywhere off the same codebase and make use of platform dependent APIs and features that users of specific operating systems have come to expect.
Depending on which project you choose you may need to know Cython, OpenGL ES2, Java, Objective-C, or C in addition to python. We make heavy use of Cython and OpenGL for computational and graphics performance where it matters, and the other languages are typically involved in accesses OS or provider level APIs.
We are hoping to participate in Google Summer of Code 2015. This page showcases some ideas for GSoC projects and corresponding guidelines for students contributing to the Kivy Framework.
Requirements¶
It is assumed that the incoming student meets some basic requirements as highlighted here:
- Intermediate level familiarity with Python.
- Comfortable with git and github (Kivy and its sister projects are all managed on github) If you have never used github before you may be interested in this tutorial.
- Comfortable with event driven programming.
- Has suitable tools/environment for kivy or the sister project you are going to work on. For example to be able to work on PyOBJus you would need access to an iOS device, mac with xcode and a developer license, to work on PyJNIus you would need an Android device, and to work on plyer you would need access to hardware for both platforms.
Additional desired skills may be listed with specific projects.
Familiarize yourself with the contributing guide We can help you get up to speed, however students demonstrating ability in advance will be given preference.
How to get setup¶
For Kivy, the easiest way is to follow the installation instructions for the development version for your specific platform:
http://kivy.org/docs/installation/installation.html#development-version
For the rest it’s usually sufficient to install the relevant project from git and add it to your PYTHONPATH.
eg.. for PyJNIus:
git clone http://github.com/kivy/pyjnius
export PYTHONPATH=/path/to/pyjnius:$PYTHONPATH
Project Ideas¶
Here are some prospective ideas sourced from the Kivy development team, if none of these projects interest you come talk to us in #kivy-dev about a project idea of your own.
Beginner Projects¶
These projects should be suitable for anyone with a college level familiarity with Python and require little knowedge of platform specifics.
Kivy Designer
- Description:
- Kivy Designer is a GUI tool for creating Kivy GUI layouts written in Kivy. You can compose, customize, and test widgets using the tool. This project has been the subject of 2 previous GSoC and is experimental, alpha level software at the moment. However, it is a very popular request for more updates among our users; if you are interested in GUI tool development this could be a great fit for you!
The Student will:
- Integrate Buildozer, which is our build tool for deploying to different target OS, within the kivy-designer.
- Interface for using hanga.io (Remote Buildozer server) as a deployment target.
- Better File management for project files. Browser Pane.
- Interface to test using different screen modules, for emulating interface on different screen sizes.
- Interface to Select different targets, simulator or actual device if connected to deploy to.
- Add mobile specific UI fixes(mostly making sure UI looks and feels the same on tablets as on desktops)
- Work on stability fixes.
- References:
- Expected outcome:
- It is expected that the student completes all the features mentioned above, except stability fixes which is dependent on however much time is left after completing the rest of the features.
- Mentors: Akshay Arora, Ryan Pessa
- Requirements: Access to Linux, Windows, or OS X
- Task level: Easy
- Desired Skills: Experience with other GUI creation tools. Familiar with Kivy approach to EventLoop and UIX Widgets.
Matplotlib Integration
- Description:
- More advanced graphing and plotting tools are a frequently requested addition to Kivy, and it would be ideal to provide them via integration with matplotlib’s extensive feature set. The primary goal of the project would be to write a Kivy backend to matplotlib that displays plots using Kivy’s own graphics API, but it would also potentially involve ensuring that matplotlib is deployable on every platform Kivy supports.
- References:
- Expected outcome:
- The matplotlib widgets will be included in the Kivy garden and ready to use on all of Kivy’s supported OS.
- Mentors: Alexander Taylor, Matthew Einhorn, Jacob Kovac
- Requirements: Access to Desktop OS and ideally at least one mobile platform
- Task level: Easy
- Desired Skills: Familiarity with Kivy widget construction and matplotlib.
Intermediate Projects¶
These projects will involve more than just pure Python coding. You may find yourself either dealing with the details of cross platform compilation or working with communicating between Python and an API in a different language.
Plyer:
- Description:
Plyer is a platform-independent Python API to use features commonly found on the desktop and mobile platforms supported by Kivy. The idea is to provide a stable API to the user for accessing features of their desktop or mobile device.
The student would replace some .java code currently in the Kivy project to a more appropriate place in Plyer. In addition, the student would work on improving access to platform specific features through Plyer, including accessibility, Bluetooth, Bluetooth Low Energy, recording and previewing the video camera, accessing contacts, recording audio, and utilizing speech recognition.
Under the hood you’ll use PyJNIus on Android, PyOBJus on OS X and iOS, ctypes on Windows, and native APIs on Linux. This probably would also include improving PyObjus and PyJNIus to handle interfaces that they can’t right now.
- References:
- Expected outcome:
- A successful outcome would include moving the Kivy Java code to plyer and implementation of some or all of the new facades to be decided with the student.
- Mentors: Gabriel Pettier, Sebastian Popute
- Requirements: Access to Linux, Windows, OS X, iOS device, Android device.
- Task level: Intermediate
- Desired Skills: Familiarity with Pyjnius, PyOBJus.
Font Reshaping and Font Fallback Support
- Description:
Currently Kivy does not support reshaping for alphabets such as Arabic, Persian, Thai, or Devanagari. The solution is to integrate a text shaping engine- Harfbuzz. You would need to ensure that we can compile Harfbuzz on every platform and properly integrate it as a core text provider.
The second part of the same project would involve font fallback support. If a particular character/glyph is missing; currently we show a [] box. The solution for this would involve either using an OS API if available or maintaining a hashtable for the default fonts on each OS which can be used for glyph fallback.
- References:
- Expected outcome:
- Font fallback and text reshaping support Kivy and correct compilation recipes for the libs used (harfbuzz) for platforms that need it, such as Python-For-Android.
- Mentors: Akshay Arora, Jacob Kovac
- Requirements: Access to Desktop OS and ideally at least one mobile platform
- Task level: Intermediate
- Desired Skills: Familiarity with text rendering, HarfBuzz, and Kivy’s provider abstraction.
Hard Projects¶
These projects may involve very in-depth knowledge of Kivy’s existing internals, the hairy details of cross-platform compilation, or other fairly advanced topics. If you are comfortable with the internals of Python, working with C code, and using Cython to build your own C extensions these projects may appeal to you.
Python-For-Android Revamp:
- Description:
- Currently Python-For-Android is not very flexible and have a very specific bootstrap crafted for use with Kivy’s old SDL1.2/1.3 backend used through Pygame and functions only with Python2. Your job would be to make the necessary changes to expose swappable bootstraps, python interpreters, and the appropriate compilation options for ARM and x86 Android. This project will involve a significant amount of refactoring the current tool, as much hardcoded functionality needs to be made optional. A student looking to take on this task should be familiar with compiling Python, the compilation process for Cython modules, and the Android SDK and NDK.
The Student will:
- Introduce bootstrap argument for the distribute script
- Introduce a new SDL2 bootstrap
- Refactor old bootstrap to use new approach
- Refactor pyjnius to find the appropriate Activity from the provided bootstrap
- Introduce option for compilation with Python3 instead of Python2, this will involve properly configuring the blacklist of ommitted modules, the collection of libs into one large one to avoid shared library limit on older devices, and performing any Python3 code conversions necessary.
- Ensure all recipes work with Python3 version of their modules
- Introduce option for compiling for different architectures (ARM and x86)
- References:
- Expected outcome:
- Python-for-Android with more options for compilation including Python2 and Python3, legacy Pygame bootstrap, SDL2 bootstrap, and ARM and x86 compilation options.
- Mentors: Mathieu Virbel, Jacob Kovac
- Requirements: Access to Linux, Android.
- Task level: Hard
- Desired Skills: Understanding of cross-compilation for Android, familiarity with PyJNIus
How to Contact devs¶
Ask your questions on the Kivy users forums http://kivy.org/#forum
Or send a mail at<EMAIL_ADDRESS>Make sure to Join kivy-dev user group too @ https://groups.google.com/forum/#!forum/kivy-dev
You can also try to contact us on IRC (online chat), to get the irc handles of the devs mentioned above visit http://kivy.org/#aboutus
Make sure to read the IRC rules before connecting. Connect to webchat
Most of our developers are located in Europe, India, and North America so keep in mind typical waking hours for these areas.
How to be a good student¶
If you want to participate as a student and want to maximize your chances of being accepted, start talking to us today and try fixing some smaller problems to get used to our workflow. If we know you can work well with us, you will have much better chances of being selected.
Here’s a checklist:
- Make sure to read through the website and at least skim the documentation.
- Look at the source code.
- Read our contribution guidelines.
- Make a contribution! Kivy would like to see how you engage with the development process. Take a look at the issue tracker for a Kivy project that interest you and submit a Pull Request. It can be a simple bug or a documentation change. We are looking to get a feel for how you work, not evaluating your capabilities. Don’t worry about trying to pick something to impress us.
- Pick an idea that you think is interesting from the ideas list or come up with your own idea.
- Do some research yourself. GSoC is about give and take, not just one sided interaction. It is about you trying to achieve agreed upon goals with our support. The main driving force in this should be, obviously, yourself. Many students pop up and ask what they should do. You should base that decision on your interests and your skills. Show us you’re serious about it and take the initiative.
- Write a draft proposal about what you want to do. Include what you understand the current state of the project to be, what you would like to improve, how, etc.
- Discuss that proposal with us in a timely manner. Get feedback.
- Be patient! Especially on IRC. We will try to get to you if we’re available. If not, send an email and just wait. Most questions are already answered in the docs or somewhere else and can be found with some research. Your questions should reflect that you’ve actually thought through what you’re asking and done some rudimentary research.
- Most of all don’t forget to have fun and interact with the community. The community is as big a part of Open Source as the code itself.
What to expect if you are chosen¶
- All students should join the #kivy and the #kivy-dev irc channels daily, this is how the development team communicates both internally and with the users.
- You and your mentors will agree on two week milestones for the duration of the summer.
- Development will occur in your fork of the master branch of Kivy, we expect you to submit at least one PR a week from your branch into a branch reserved for you in the primary repo. This will be your forum for reporting progress as well as documenting any struggles you may have encountered.
- Missing 2 weekly PR or 2 milestones will result in your failure unless there have been extenuating circumstances. If something comes up, please inform your mentors as soon as possible. If a milestone seems out of reach we will work with you to reevaluate the goals.
- Your changes will be merged into master once the project has been completed and we have thoroughly tested on every platform that is relevant!


This site contains various blogs about hackathons, how they are conducted, Hackathons for Newbies
Tech Stack: HTML, CSS, Bootstrap
Data Science Enthusiast and Full Stack Web Developer
| Age | : | 19 Years Old |
| : |<EMAIL_ADDRESS>| |
| Phone | : | +91<PHONE_NUMBER> |
| College | : | Shaheed Sukhdev College of Business Studies, University of Delhi |
I am a Tech Enthusiast. I know Web Development and Data Science. My Hobbies include playing Cricket and watching Horror Movies. "Progress is not possible without a change" - A line which motivated me, while I was struggling with diminishing user base of my targeted Platforms.My Passion is undoubtedly 'Coding' but my hobbies include organizing Events, and for pursuing it I have been an active organizer in College Fest, Society Events, 'hackCBS' , Facebook Developer Circle: Delhi-NCR and many more. I follow the strategy of "Run, Walk or Crawl: But Keep moving". In my leisure time, I communicate with people around me and love to know about story of their life, as I believe "there's a Story Behind Everyone's Story, You Just need to be the lucky one to hear it". I have a big AI dream of building truly intelligent machines someday.Inspired by AI Pioneer "Andrew NG".I love playing with Data, gaining insights from it, and making predictive models.
Skill Set: Python, HTML, CSS, Javascript, NodeJS,Python, Data Analysis, C++, Machine Learning, Deep Learning, Natural Language Processing
Libraries: numpy, pandas, scikit-learn, nltk,etc.
I am a Student here. The Feauture Belongs to those who believe in the beauty of their dreams.
Core Committe Member, Organized India's largest student run hackathon hackCBS
Working on research and different projects related to Data Science
Experience with RHEL8, mentored under World Record Holder Mr. Vimal Daga
Contributed to various open source projects related to Data Science and Front-End Web Development
Learning Machine Learning, Deep Learning, Spark, Exploratory Data Analysis and NLP with deployment
This site contains various blogs about hackathons, how they are conducted, Hackathons for Newbies
Tech Stack: HTML, CSS, Bootstrap
Exploratory Data Analysis on the performance of the student based on various features
Tech Stack: Python, Numpy, Pandas, Matplotlib
A Beautiful functioning Calculator with a nice UI design
Tech Stack: HTML, CSS, Javascript
Predicting whether a passenger on titanic will survive or not
Tech Stack: Python, pandas, numpy , machine learning
© Website Designed By Manan Bedi


Number of Proxies
Server Image
Fetching Images...
Create
Clear Logs
Cancel Task(s)
Copy to Clipboard
Settings
#
IP/Host
Port
Username
Password
Status


{% extends '../index.html' %} {% block title %}Edit {{ book.title }}{% endblock %} {% block content %}
Use comma to separate genres.
** Need more work to get file upload work.


Locate your constituency and voting details for the 2019 Lok Sabha Elections
| Date | Progress |
|---|---|
| 6 May | Polling: Phase 5 Bihar, Jammu and Kashmir, Jharkhand, Madhya Pradesh, Rajasthan, Uttar Pradesh, West Bengal |
| 12 May | Polling: Phase 6 Bihar, Haryana, Jharkhand, Madhya Pradesh, Uttar Pradesh, West Bengal, Delhi |
| 19 May | Polling: Phase 7 Bihar, Himachal Pradesh, Jharkhand, Madhya Pradesh, Punjab, West Bengal, Chandigarh, Uttar Pradesh |
| 23 May | Election results |
ElectionMap is an open source citizen awareness tool built by the Datameet - Indian Open Data Community to provide the 900 million eligible voters in India an easy way of finding voting information relating to the upcoming 2019 General Elections which are to be held from 11 April to 19 May 2019.
The tool uses available open data of electoral boundaries to locate the parliamentary constituency and provides polling dates published by the Election Commission of India and links to the affadavits of contesting candidates.
DISCALIMER: All data displayed on this website have been compiled from various sources and to be used for reference purposes only. Users are requested ro report any issues and to verify official information with the Election Comission of India
The map will automatically fetch your location and highlight the parliamentary constituency based on your location.
If this is incorrect, you can use the search button on the right or manually click on the map to select another location.
For more voting resources please see list of useful links


🎳 Ten Pin Bowling
Current Turn
Frame:
Roll:
Enter Score:
0
1
2
3
4
5
6
7
8
9
10
Total Score
Previous Turns
Frame
Roll
Pins
Frame Scores


dskexplorer.rb is a browser based DSK archive exploring tool. It can explore both local disk and remote web archives. It is part of the dsktool.rb package. You will need to have ruby installed.
To install dskexplorer.rb, you just need to install the dsktool.rb rubygem. Depending on your OS, that is done by typing either gem install dsktool or sudo gem install dsktool at a command prompt.
To use, run dskexplorer.rb and specify the location of the archive to
explore using the '-r' switch.
For example dskexplorer.rb -r
http://www.apple2.org.za/mirrors/
Then open a browser, and navigate to http://localhost:6502/
dskexplorer.rb Synopsis -------- A web-based DSK file explorer Usage ----- dskexplorer.rb [switches] -h | --help display this message -p | --port PORT_NUMBER port number to listen on (default is 6502) -r | --root ROOT_DIR root directory to explore from (default is current directory) -v | --version show version number Examples dskexplorer.rb -r http://www.apple2.org.za/mirrors/ dskexplorer.rb -r c:\downloads\apple2\ -p 8080Jonno Downes - jonno at jamtronix.com


Expectations:
|
Definition of Done:
|
Note: We will look more into version control in sprint 2 - especially feature branches vs. trunk based development
Expectations:
|
Definition of Done:
|
Expectations:
|
Definition of Done:
|


Introduction
The EAGLE System Testing Framework is initially developed as a system level validation framework for the EAGLE tools.
It will later be adapted for the validation of external tools.
Aims
Its first aim is to test the validity of EAGLE's outputs by running CASAVA on them, checking that nothing crashes, and checking that obvious variants are detected (hence correctly generated).
As part of our test-driven development, this system testing framework is actually developed before the main EAGLE tools.
Ideas
By generating some outputs that are extremely easy to align, we can assume that external tools such as CASAVA should align and call all the variants without making any mistake. Checking those variants against the ones provided as inputs of EAGLE should prove that EAGLE generated valid data.
The next stage should add more complexity in the variants, their detection and the analysis of the errors.
Architecture
Implementation
Implemented by "make test" in <EAGLE install>/validation/test* directory.
It runs CASAVA on a set of validation tests.
Validation tests
The tests are intended to validate the various features of the simulator by going through the full flow.
It is useful (and important) to run these tests at the system level, as it allows us to validate that the combination of output files are in formats readable by CASAVA (or whatever post-run tools we decide to use).
Test # |
Description |
Validation check |
Current results |
|---|---|---|---|
1-100 |
Generic test on a small example: reference genome = PhiX (or Enterobacteriophage) |
|
|
1 |
non-circular, 30x coverage, 1 lane, 1 tile, 1 read of 101 bases, no barcode, no variants |
|
passed |
2 |
Test 1 + 2 lanes, 2 tiles/lane |
|
passed |
3 |
Test 1 + 2 reads of 101 bases |
|
passed |
4 |
Test 3 + barcode of 7 bases between the 2 reads |
|
passed |
5 |
Test 4 + 8 lanes, 32 tiles/lane |
|
passed |
6 |
Test 5 + 1 SNP, 1 small insertion, 1 small deletion, 1 large deletion (=translocation on same chromosome).(large insertion removed, as it wasn't detected properly) |
|
passed |
7 |
Test 5 + a variant at the beginning/end of the chromosome, where it is expected that the coverage will be too low for proper detection |
Check that the variant doesn't get detected, or that the coverage is expectedly low at the chromosome ends |
passed |
8 |
Test 7 + circular chromosome |
Check that the coverage at the chromosome ends is at 30x, and that the variant now gets detected |
passed |
9 |
Test 8 with 1 lane and 1 tile/lane, single read, no barcode |
Check that flow still runs and variants still get detected |
passed |
10 |
Test 8 with different tile naming scheme |
Check tile names, and check that variants still get detected by post-processing tools |
not implemented |
11 |
Test 8 with 2 reads: 31+151 bases |
|
not implemented |
|
Test paired read / mate pairs difference |
|
not implemented |
|
Test barcodes |
|
|
|
Test adapters and sequencing primers sequences |
|
|
|
|
|
|
Test # |
Description |
Validation check |
|---|---|---|
Mux1-... |
Multiplexed tests |
|
Mux1 |
|
|
|
|
|
Test # |
Description |
Validation check |
|---|---|---|
Human1 |
Generic test with no variants on human reference genome |
|
Human2 |
Translocations from Stephens, et al. |
|
Human3 |
Human1 test restricted to chr21 |
|


Bearingheater Dimension
Home > Product > Bearingheater Dimension- Bearing heater drawing
-
Bearing heater specification
Model name BHW-
NDMBHW-
SMSBHW-
LDMBHW-
XLDMBHW-
XLDSBearing inner
diameter(mm)∅15~
∅200∅15~
∅250∅20~
∅300∅30~
∅400∅50~
∅600Width*Length*Height(A,B)mm 380*155*295
(88,95)600*225*275
(130,120)450*225*380
(120,120)600*250*420
(180,180)850*540*820
(250,300)Weight(Kg) 17.5 23 35 75 100 Current/
Voltage/
KVA15/220/3.5 20/220/4.4 25/220/4.5 35/220/8.0 65/220/14.0 Function Digital, Timer,Overheating
prevention, Demagnetization-> with
carrierCross bar
∅15o o Cross bar
∅20o o o Cross bar
∅30o o o o Cross bar
∅40o o o Cross bar
∅50o o o o Cross bar
∅60o Cross bar
∅65o o o Cross bar
∅80o o Cross bar
∅85o Cross bar
∅100o Cross bar
∅115o o - Table of expansion coefficient of inner ring diameter according to temperature change
-
Name of each part
- Temperature sensor connection
- Buzzer
- Display
- Increase setting value
- Mode change
- Decrease setting value
- Power on, off
- Adjusting and saving set values
- Heating start, end
-
Installation mode
Install the temperature mode bearing horizontally.
(With temperature sensor bearing inner ring)
Install the temperature mode bearing by hanging it.(With temperature sensor bearing inner ring)
Install the timer mode bearing horizontally.(Not attached to the temperature sensor bearing)
Install the timer mode bearing by hanging it.(Not attached to the temperature sensor bearing)
-
How to change the magnet to the support of the sensor
※ Hold the magnet part of the temperature sensor line as above and attach the cross bar to the top. This turns the magnet into a support for the sensor.


The Golden Retriever is one of the most popular dog breeds in the U.S. The breed’s friendly, tolerant attitude makes them fabulous family pets, and their intelligence makes them highly capable working dogs Golden Retrievers excel at retrieving game for hunters, tracking, sniffing out contraband for law enforcement, and as therapy and assistance dogs. They’re also natural athletes, and do well in dog sports such as agility and competitive obedience


This experiment was to check the hallunogenic properties of Diphenhydramine. Since it is sleep/drowsiness inducing, I added the Pseudoephedrine to stay awake to enjoy the trip. Both of these are from commonly available over the counter drugs. Pseudoephedrine used to be found in Sudafed, which I used, but they have changed their formulation recently to use Phenylephrine instead, as many products with pseudoephedrine have been taken off of the shelves here in GA. DayQuil and it's generic alternatives still contain it, so there is a source there for anyone trying to re-create these effects. Diphenhydramine is the active ingredient in Benadryl, so in addition to the trip I hope to experience my allergies should be nice and happy for a day or two.
I took 5 pseudoephedrine pills totaling 150 mg, and 15 diphenhydramine pills totaling 375 mg. I hope that this is enough upper to cancel out the sleepiness, but if not, I can add more. I took the doses I did due to my body weight and my desire to experience some serious hallucinations. I am also drinking Mountain Dew Code Red, so there is caffeine from those to keep me awake. Finally, I plan to smoke a bowl when it all kicks in hard to extend and enhance the trip.
15 minutes after taking the 20 pills, I can already feel the pseudoephedrine taking effect. My heart rate is increased, and I feel like I have tons of usable energy. I also have trouble concentrating on one thought for too long. All of the general effects of an upper. I should also mention that I took the pills on an empty stomach.
1 hour in I have a decent body buzz, very similar to me having several drinks. There is a mellow head buzz too. I know that if I didn't have the pseudoephedrine, I would have already passed out. I can no longer feel it, but it is there, keeping me up. I also have slurred speech and a very dizzy feeling in my head.
1 hour in I smoked 1 bowl of bud that was a week old by still very potent. The theory is that the cannabis will help me to meld into the trip, when/if it happens.
1 hour 30 minutes, and I feel like I have taken Ecstasy. Body buzz is incredible. Mentally, I have trouble reading several pages online without either being completely distracted by nothingness or being in a daze.
1 hour 40 minutes, there is a taste of bile in my mouth/throat. It's good that I didn't each anything.
2 hours, I stand up, and it feels like gravity has quadrupled. I feel very heavy, like opium.
3 hours, seeing very light visuals that could be tricks of the light. Sense of smell is greatly enhanced. Still unable to concentrate on anything for long periods of time. Sense of time is slowed and/or distorted. Also at three hours, attempting to read anything results in me somehow reading about something that is made up and imaginary from inside my head.
3 hours 30 minutes, I have drifted in and out of sleep.
At 4:20, I was hardly feeling either substance, so I smoked another bowl. After smoking I felt only high, maybe a little bit of the pseudoephedrine.
The plateau lasted approximately 2 hours, and started 1 hour after ingesting the pills. There was a very good body buzz, as well as slight hallucinations. There was also a drunken/dizzy feeling, as well as a heaviness feeling that I usually associate with opium. I was hoping for more vivid hallucinations, but overall is was a good experience.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Below are examples of how to find an artists top tracks and similar artists.
artist = Scrobbler::Artist.new('Carrie Underwood') puts 'Top Tracks' puts "=" * 10 artist.top_tracks.each { |t| puts "(#{t.reach}) #{t.name}" } puts puts 'Similar Artists' puts "=" * 15 artist.similar.each { |a| puts "(#{a.match}%) #{a.name}" }
Would output something similar to:
Top Tracks ========== (8797) Before He Cheats (3574) Don't Forget to Remember Me (3569) Wasted (3246) Some Hearts (3142) Jesus, Take the Wheel (2600) Starts With Goodbye (2511) Jesus Take The Wheel (2423) Inside Your Heaven (2328) Lessons Learned (2040) I Just Can't Live a Lie (1899) Whenever You Remember (1882) We're Young and Beautiful (1854) That's Where It Is (1786) I Ain't in Checotah Anymore (1596) The Night Before (Life Goes On) Similar Artists =============== (100%) Rascal Flatts (84.985%) Keith Urban (84.007%) Kellie Pickler (82.694%) Katharine McPhee (81.213%) Martina McBride (79.397%) Faith Hill (77.121%) Tim McGraw (75.191%) Jessica Simpson (75.182%) Sara Evans (75.144%) The Wreckers (73.034%) Kenny Chesney (71.765%) Dixie Chicks (71.084%) Kelly Clarkson (69.535%) Miranda Lambert (66.952%) LeAnn Rimes (66.398%) Mandy Moore (65.817%) Bo Bice (65.279%) Diana DeGarmo (65.115%) Gretchen Wilson (62.982%) Clay Aiken (62.436%) Ashlee Simpson (62.160%) Christina Aguilera
Getting information about an album such as release date and the tracks on it is very easy.
album = Scrobbler::Album.new('Carrie Underwood', 'Some Hearts', :include_info => true) puts "Album: #{album.name}" puts "Artist: #{album.artist}" puts "Reach: #{album.reach}" puts "URL: #{album.url}" puts "Release Date: #{album.release_date.strftime('%m/%d/%Y')}" puts puts puts "Tracks" longest_track_name = album.tracks.collect(&:name).sort { |x, y| y.length <=> x.length }.first.length puts "=" * longest_track_name album.tracks.each { |t| puts t.name }
Would output:
Album: Some Hearts Artist: Carrie Underwood Reach: 18729 URL: http://www.last.fm/music/Carrie+Underwood/Some+Hearts Release Date: 11/15/2005 Tracks =============================== Wasted Don't Forget to Remember Me Some Hearts Jesus, Take the Wheel The Night Before (Life Goes On) Lessons Learned Before He Cheats Starts With Goodbye I Just Can't Live a Lie We're Young and Beautiful That's Where It Is Whenever You Remember I Ain't in Checotah Anymore Inside Your Heaven
Below is code samples for how to find the top albums and tracks for a tag.
tag = Scrobbler::Tag.new('country') puts 'Top Albums' tag.top_albums.each { |a| puts "(#{a.count}) #{a.name} by #{a.artist}" } puts puts 'Top Tracks' tag.top_tracks.each { |t| puts "(#{t.count}) #{t.name} by #{t.artist}" }
Which would output something similar to:
Top Albums (29) American IV: The Man Comes Around by Johnny Cash (14) Folks Pop In at the Waterhouse by Various Artists (13) Hapless by Flowers From The Man Who Shot Your Cousin (9) Taking The Long Way by Dixie Chicks (8) Unchained by Johnny Cash (8) American III: Solitary Man by Johnny Cash (8) Wide Open Spaces by Dixie Chicks (7) It's Now or Later by Tangled Star (7) Greatest Hits by Hank Williams (7) American Recordings by Johnny Cash (6) Forgotten Landscape by theNoLifeKing (6) At Folsom Prison by Johnny Cash (6) Fox Confessor Brings the Flood by Neko Case (6) Murder by Johnny Cash (5) Gloom by theNoLifeKing (5) Set This Circus Down by Tim McGraw (5) Blacklisted by Neko Case (5) Breathe by Faith Hill (5) Unearthed (disc 4: My Mother's Hymn Book) by Johnny Cash (4) Home by Dixie Chicks Top Tracks (221) Hurt by Johnny Cash (152) I Walk the Line by Johnny Cash (147) Ring of Fire by Johnny Cash (125) Folsom Prison Blues by Johnny Cash (77) The Man Comes Around by Johnny Cash (67) Personal Jesus by Johnny Cash (65) Not Ready To Make Nice by Dixie Chicks (63) Before He Cheats by Carrie Underwood (62) Give My Love to Rose by Johnny Cash (49) Jackson by Johnny Cash (49) What Hurts The Most by Rascal Flatts (48) Big River by Johnny Cash (46) Man in Black by Johnny Cash (46) Jolene by Dolly Parton (46) Friends in Low Places by Garth Brooks (46) One by Johnny Cash (44) Cocaine Blues by Johnny Cash (41) Get Rhythm by Johnny Cash (41) I Still Miss Someone by Johnny Cash (40) The Devil Went Down to Georgia by Charlie Daniels Band
Below is an example of how to get the top fans for a track.
track = Scrobbler::Track.new('Carrie Underwood', 'Before He Cheats') puts 'Fans' puts "=" * 4 track.fans.each { |u| puts u.username }
Which would output something like:
track = Scrobbler::Track.new('Carrie Underwood', 'Before He Cheats') puts 'Fans' puts "=" * 4 track.fans.each { |u| puts "(#{u.weight}) #{u.username}" } Fans ==== (69163) PimpinRose (7225) selene204 (7000) CelestiaLegends (6817) muehllr (5387) Mudley (5368) ilovejohnny1984 (5232) MeganIAD (5132) Veric (5097) aeVnar (3390) kristaaan (3239) kelseaowns (2780) syndication (2735) mkumm (2706) Kimmybeebee (2648) skorpcroze (2549) mistergreg (2449) mlmjcace (2302) tiNEey (2169) ajsbabiegirl
Probably the most common use of this lib would be to get your most recent tracks or your top tracks. Below are some code samples.
user = Scrobbler::User.new('jnunemaker') puts "#{user.username}'s Recent Tracks" puts "=" * (user.username.length + 16) user.recent_tracks.each { |t| puts t.name } puts puts puts "#{user.username}'s Top Tracks" puts "=" * (user.username.length + 13) user.top_tracks.each { |t| puts "(#{t.playcount}) #{t.name}" }
Which would output something like:
jnunemaker's Recent Tracks ========================== Everything You Want You're a God Bitter Sweet Symphony [Original Version] Lord I Guess I'll Never Know Country Song Bitter Sweet Symphony (Radio Edit) jnunemaker's Top Tracks ======================= (62) Probably Wouldn't Be This Way (55) Not Ready To Make Nice (45) Easy Silence (43) Song 2 (40) Everybody Knows (39) Before He Cheats (39) Something's Gotta Give (38) Hips Don't Lie (featuring Wyclef Jean) (37) Unwritten (37) Move Along (37) Dance, Dance (36) We Belong Together (36) Jesus, Take the Wheel (36) Black Horse and the Cherry Tree (radio version) (35) Photograph (35) You're Beautiful (35) Walk Away (34) Stickwitu
Below are examples of how to find an artists top tracks and similar artists.
artist = Scrobbler::Artist.new('Carrie Underwood') puts 'Top Tracks' puts "=" * 10 artist.top_tracks.each { |t| puts "(#{t.reach}) #{t.name}" } puts puts 'Similar Artists' puts "=" * 15 artist.similar.each { |a| puts "(#{a.match}%) #{a.name}" }
Would output something similar to:
Top Tracks ========== (8797) Before He Cheats (3574) Don't Forget to Remember Me (3569) Wasted (3246) Some Hearts (3142) Jesus, Take the Wheel (2600) Starts With Goodbye (2511) Jesus Take The Wheel (2423) Inside Your Heaven (2328) Lessons Learned (2040) I Just Can't Live a Lie (1899) Whenever You Remember (1882) We're Young and Beautiful (1854) That's Where It Is (1786) I Ain't in Checotah Anymore (1596) The Night Before (Life Goes On) Similar Artists =============== (100%) Rascal Flatts (84.985%) Keith Urban (84.007%) Kellie Pickler (82.694%) Katharine McPhee (81.213%) Martina McBride (79.397%) Faith Hill (77.121%) Tim McGraw (75.191%) Jessica Simpson (75.182%) Sara Evans (75.144%) The Wreckers (73.034%) Kenny Chesney (71.765%) Dixie Chicks (71.084%) Kelly Clarkson (69.535%) Miranda Lambert (66.952%) LeAnn Rimes (66.398%) Mandy Moore (65.817%) Bo Bice (65.279%) Diana DeGarmo (65.115%) Gretchen Wilson (62.982%) Clay Aiken (62.436%) Ashlee Simpson (62.160%) Christina Aguilera
Getting information about an album such as release date and the tracks on it is very easy.
album = Scrobbler::Album.new('Carrie Underwood', 'Some Hearts', :include_info => true) puts "Album: #{album.name}" puts "Artist: #{album.artist}" puts "Reach: #{album.reach}" puts "URL: #{album.url}" puts "Release Date: #{album.release_date.strftime('%m/%d/%Y')}" puts puts puts "Tracks" longest_track_name = album.tracks.collect(&:name).sort { |x, y| y.length <=> x.length }.first.length puts "=" * longest_track_name album.tracks.each { |t| puts t.name }
Would output:
Album: Some Hearts Artist: Carrie Underwood Reach: 18729 URL: http://www.last.fm/music/Carrie+Underwood/Some+Hearts Release Date: 11/15/2005 Tracks =============================== Wasted Don't Forget to Remember Me Some Hearts Jesus, Take the Wheel The Night Before (Life Goes On) Lessons Learned Before He Cheats Starts With Goodbye I Just Can't Live a Lie We're Young and Beautiful That's Where It Is Whenever You Remember I Ain't in Checotah Anymore Inside Your Heaven
Below is code samples for how to find the top albums and tracks for a tag.
tag = Scrobbler::Tag.new('country') puts 'Top Albums' tag.top_albums.each { |a| puts "(#{a.count}) #{a.name} by #{a.artist}" } puts puts 'Top Tracks' tag.top_tracks.each { |t| puts "(#{t.count}) #{t.name} by #{t.artist}" }
Which would output something similar to:
Top Albums (29) American IV: The Man Comes Around by Johnny Cash (14) Folks Pop In at the Waterhouse by Various Artists (13) Hapless by Flowers From The Man Who Shot Your Cousin (9) Taking The Long Way by Dixie Chicks (8) Unchained by Johnny Cash (8) American III: Solitary Man by Johnny Cash (8) Wide Open Spaces by Dixie Chicks (7) It's Now or Later by Tangled Star (7) Greatest Hits by Hank Williams (7) American Recordings by Johnny Cash (6) Forgotten Landscape by theNoLifeKing (6) At Folsom Prison by Johnny Cash (6) Fox Confessor Brings the Flood by Neko Case (6) Murder by Johnny Cash (5) Gloom by theNoLifeKing (5) Set This Circus Down by Tim McGraw (5) Blacklisted by Neko Case (5) Breathe by Faith Hill (5) Unearthed (disc 4: My Mother's Hymn Book) by Johnny Cash (4) Home by Dixie Chicks Top Tracks (221) Hurt by Johnny Cash (152) I Walk the Line by Johnny Cash (147) Ring of Fire by Johnny Cash (125) Folsom Prison Blues by Johnny Cash (77) The Man Comes Around by Johnny Cash (67) Personal Jesus by Johnny Cash (65) Not Ready To Make Nice by Dixie Chicks (63) Before He Cheats by Carrie Underwood (62) Give My Love to Rose by Johnny Cash (49) Jackson by Johnny Cash (49) What Hurts The Most by Rascal Flatts (48) Big River by Johnny Cash (46) Man in Black by Johnny Cash (46) Jolene by Dolly Parton (46) Friends in Low Places by Garth Brooks (46) One by Johnny Cash (44) Cocaine Blues by Johnny Cash (41) Get Rhythm by Johnny Cash (41) I Still Miss Someone by Johnny Cash (40) The Devil Went Down to Georgia by Charlie Daniels Band
Below is an example of how to get the top fans for a track.
track = Scrobbler::Track.new('Carrie Underwood', 'Before He Cheats') puts 'Fans' puts "=" * 4 track.fans.each { |u| puts u.username }
Which would output something like:
track = Scrobbler::Track.new('Carrie Underwood', 'Before He Cheats') puts 'Fans' puts "=" * 4 track.fans.each { |u| puts "(#{u.weight}) #{u.username}" } Fans ==== (69163) PimpinRose (7225) selene204 (7000) CelestiaLegends (6817) muehllr (5387) Mudley (5368) ilovejohnny1984 (5232) MeganIAD (5132) Veric (5097) aeVnar (3390) kristaaan (3239) kelseaowns (2780) syndication (2735) mkumm (2706) Kimmybeebee (2648) skorpcroze (2549) mistergreg (2449) mlmjcace (2302) tiNEey (2169) ajsbabiegirl
Probably the most common use of this lib would be to get your most recent tracks or your top tracks.


{include file="common/favicon.html"}> <{include file="common/cssLibs.html"}> <{include file="common/cssApp.html"}>
<{$source}>


My long-term goal is to learn more about the different types of coding languages so I'm able to make a career out of it and get a decent job so I'm able to follow my dreams of making my own video game.
I've never really been a big people person so that is one skill I would like to improve on.
There are many areas in which I need to improve myself but the biggest one is keeping to a time schedule when doing trying to complete the workload that will be thrown my way.


Hasenhuettl: Southampton tackled pressing issues during break
SOUTHAMPTON, Nov 21 — Struggling Southampton have spent the last two weeks trying to rediscover their relentless pressing style and will approach the Premier League clash at Arsenal on Saturday with nothing to lose, manager Ralph Hasenhuettl said today.
Southampton are second bottom in the league with eight points, having lost six of their last seven games including a 9-0 humiliation at home by Leicester City last month that has heaped pressure on the Austrian manager.
“We have to have a good trigger after we lose the ball, we have to win it back immediately. This is something we’ve been working on in the last two weeks,” Hasenhuettl said.
“You could see we forgot a bit about this behaviour and it’s a behaviour that made us strong, so finding that again has been the main work over the last two weeks.
“Against big opponents you have nothing to lose. If you go into a game, be brave and believe in yourselves then you have a big chance to get something. Arsenal have been struggling in the last games but at home they’re strong.”
Five of Southampton’s next six matches are against teams in the bottom eight but Hasenhuettl is focused on Saturday.
“We must look forward to the next game and we know we only have a chance at he added.
“The last few away games were OK and we want to show our fans again that we want to be competitive.”
Sixth-placed Arsenal are looking for their first victory in five league matches. — Reuters


---
layout: post
title: João I de Castela
date: '2018-06-13T11:30:11+02:00'
categories:
- Storyboards
- Sketches
- Horses
- Atoleiros Battle
picture_url: https://film-Storyboards.tumblr.com/post/174855681738/Storyboards-joão-i-de-castela
---
João I de Castela (Juan I de Castilla), top shot as a knight on his warhorse


Bengaluru: Man arrested for posing as CBI officer to extort money, two Mercedes-Benz cars seized
The police says that after this incident he was also planning to extort money posing as a CBI officer from some more people.
by Darshan Devaiah BPThe Bengaluru Central Crime Branch (CCB) police have arrested a person Friday for allegedly threatening and extorting money from various people posing as a Central Bureau of Investigation (CBI) officer.
The accused has been identified as Abhilash (34) and the CCB police have seized Rs 24 lakhs from him. Speaking to Indianexpress.com, Sandeep Patil, the Joint Commissioner of Police (crime), said, “The accused has extorted Rs 24 lakhs recently from a person saying he is a CBI officer, and threaten that he will book false cases.”
The police said that after this incident he was also planning to extort money posing as a CBI officer from some more people. The cops have also seized two Mercedes Benz cars from the accused.
According to Abhilash’s social media profile, he has mentioned that he is a businessman and an engineer. A case has been registered against him under relevant sections of IPC and police are investigating the matter.


Learn about Charles Robertson
For the past 16 years I have been working the in the food service industy from Seattle, WA to Portland, ME and Fort Collins, CO in between.The first 10 years I was in the restaurant industry. Started out working in the pantry at my first restaurant all the way up excutive Sous Chef. The last 6 years I have worked in the grocery, at Whole Foods Market and metropolitan market in the deli deparment. Manly doing prodution but whenever need I would do the special orders and Catering. After working so long in the food service industry I needed switch things for the better, so after hearing about Epicodus and doing a little bit a research I really feel in love with the idea fo coding, and I still get to be creative.
My heritage is very important to me both my parents are Native American. My father is from The Sisseton Wahpeton Oyate of the Lake Traverse Reservation, formerly Sisseton-Wahpeton Sioux Tribe/Dakota Nation. My mother was born in Southastern Alaska and is 1/2 Scandinavian and 1/2 Tlingit. Most of my mothers family are commercial fisherman and we was really fortuante that they would send down fresh seafood for all the family members.  In those 2 weeks there was the huge Pow Wow everyone would go to, the food was
I would have to say that my main hobby is playing Magic the Gathering at my LGS (local game store) I have met a great deal of wonderful people. The magic community is one of the most diverse and excepting groups of individuals I have ever had the pleasue of encountering. During the fall season I love to make sauerkraut with my wife Denys. We have been doing this for the last 4 years and just started to make kim chi. Learning how to make fermented foods is really interesting and the amount of different types of food you can ferment is mind blowing. Most of this I like to do after work beacuse it doesnt take alot of work to make just time to rest and cultivate.


Survey Form
This is a survey form for techschool.
*Name
*Email
*Roll No
How do you rate our courses?
Excellent
Good
Fair
Poor
Which is your favorite course?
Science
Mathematics
Art
What do you like about techschool.com ?
Classes
Teachers
Culture
Help us improve. Enter your suggestion s.


{% extends "_base.html" %}
{% block header %}
Bitcaster is a system-to-user signal-to-message notification system. Bitcaster will receive signals from any of your applications/systems using a simple RESTful API and will convert them in messages to be distributed to your users via a plethora of channels. Messages content is customised at user/receiver level using a flexible template system. Your user will be empowered with an easy to use console to choose how to receive the messages configured in Bitcaster. Bitcaster comes loaded with multiple ready to use dispatchers


Once you are pregnant, you can decide what will be the next steps. If you decide to have and raise the baby, you may need help identifying a strong
support system. Teens and young girls who have babies can certainly achieve their personal life goals and raise healthy successful children, but often it will
be considerably more challenging.
- Kinship care
In kinship care arrangements, which have become increasingly common in recent years, a grandparent or other relative serves as a parent to the infant.
This may be through an informal, private arrangement or through child welfare systems, which vary by state.
Kinship care arrangements can give a teen an opportunity to be involved with raising his or her child, as well as the chance to take on responsibilities
of parenthood in the future. Growing evidence also suggests that babies in kinship care arrangements fare better than those cared for by unrelated foster
parents. However, kinship care arrangements face unique challenges.
If you're considering kinship care, here are a few things you should consider:
- Most children living with relatives are in informal arrangements, and this creates a problem if the relatives do not have the authority to give legal
consent for needed medical care, including immunizations and other non-emergency health services. Your pediatrician can help connect you with community
legal resources to help you take steps to gain legal authority to help children get the medical care they need to stay healthy.
- Older family caregivers who haven't parented an infant for several years may not be aware of changes to safety standards for sleep, car seats and
injury prevention.
- Raising an infant the second time around can be a deeply rewarding and invigorating experience. However, it's a good idea for older caregivers to
have a plan in place for guardianship in the event they experience health declines.
- Adoption
Adoption is another option for teens who want to have their baby but don't feel ready or able to become a parent. Over 2 million couples are currently
waiting to adopt, love, and care for a baby in the U.S.—which translates into three dozen couples in line for every child placed for adoption.
The decision to place a baby with an adoptive family is legal and binding. However, most states do allow the birth mother anywhere from several days to
several months after the child is born to change her mind. Information about adoption laws can be found on the Child Welfare Information Gateway, which is a service of the Children's Bureau in the U.S. Department of Health and Human Services.
If you're considering adoption, here are a few things you should know:
- In public adoptions, the child is placed in a family by an agency operated or contracted by the state.
- In private or independent adoptions, the birth parents may work with an attorney, physician, clergy member, or a licensed or unlicensed facilitator.
- In closed adoptions, the names of the birth mother and the adoptive parents are kept secret from each other.
- In open adoptions, the birth parent may choose to personally select the adoptive parents, meet with them, and even maintain an ongoing relationship.
Open adoptions, research shows, may lessen feelings such as grief or guilt some birth parents who make an adoption plan for their child may experience.
- Parenting
Whether someone is parenting by themselves, with a partner or support from their family, it’s important to think about how they can provide a positive environment for
the baby as it grows. Babies need safety, food, clothing, diapers, toys, day-care etc. Social assistance is available to help with the cost of these things, but it may
mean living on a tight budget. The biggest and most important thing a baby needs to be happy and healthy is love. This is something we can all provide no matter our age.
If you're considering parenting, here are a few things you should know:
- When someone is under 18 years of age and choosing to parent, Child and Family Services (CFS) is required to check-in on the family. They have workers whose
job is to help young parents become more comfortable and adjust to their new role. It is better to contact CFS yourself if you’ve decided to parent because they can help with
accessing pre and post natal supports and programs.
- It’s important for parents to think about how they can take care of them self. It can be stressful raising a baby. Making time for yourself to do
something you enjoy is still important because stress levels can affect both a parent’s and baby’s health and wellbeing. Finding people that you trust and can talk with
can also make a big difference. This could be a friend, a family member, a counsellor or a parenting group. Parenting programs, supports and resources including parenting
friendly schools are available.
- Ending the pregnancy
Because some pregnant teens will consider abortion, we encourage you to talk to a parent or trusted adult before
making such a big decision.
Teens who are willing to involve their parents in their abortion decision, as most are, usually benefit from adult experience, wisdom, emotional and
financial support. Parental notification laws exist and vary from state to state.
If you're considering ending the pregnancy, here are a few things you should know:
- Talk to your pediatrician about local laws affecting the pregnancy termination options and where to find trained and licensed providers.
Medical and surgical abortions are safe when performed by licensed and experienced physicians.
- Out-of-pocket costs for abortion services can be a barrier for pregnant teens and their families. Lack of money can cause delays,
which can lead to more complicated procedures further along in the pregnancy. Sources of financial assistance may be available in your community
or state.
- Most women will not experience any problems, but there is a small risk of complications, such as:
infection of the womb (uterus),
some of the pregnancy remaining in the womb,
excessive bleeding,
damage to the womb or entrance of the womb (cervix).
- Abortion is a safe procedure. Abortions are safest, and happen with less pain and bleeding, when carried out as early as
possible in pregnancy.
Whatever you decide on, make sure you do it legally and safely. Reach out to our chat bot for
any questions you might have, we'll be more than happy to answer you.


Click your location on the map to post a bid.
Find more open bids on the Jobber Board
Please enter your username and password:


CRAFTED FOR COMFORT, BUILT FOR BATTLE
Plush memory foam and adjustable earcups provide exceptional comfort.
BUILT TO LAST
Legendary CORSAIR build quality featuring metal construction ensures long-term durability.
PRECISION GAMING AUDIO
Specially tuned 50mm neodymium speaker drivers deliver superior sound quality with wide range and accuracy.
Virtual 7.1 surround delivers immersive multi-channel positional audio on PC that puts you in the middle of the action.
SUPERIOR WIRELESS PERFORMANCE
Low-latency, 2.4Ghz wireless audio with improved range up to 40ft and up to 16 hours of battery life.
SONY PLAYSTATION 4 COMPATIBLE
Plug-and-play compatibility with Sony PlayStation 4 brings wireless stereo audio to your living room.
ON-EAR CONTROL
Easy access on-ear volume and mute controls for adjustments on-the-fly.
INTELLIGENT CONTROL. UNLIMITED POSSIBILITIES.
Powerful CORSAIR iCUE software enables custom audio equalizer settings, sidetone control and immersive virtual surround audio.


These days I’m playing with IoT. Today I want to use MQTT protocol to comunicate between different devices. First I’ve start a mqtt broker in my Laptop. For testing I’ll use mosquitto server. In production we can use RabbitMQ or even a 3party server such as iot.eclipse.org or even Amazon’s IoT service.
The idea is emit one value with one device, and listen this value whit the rest of devices and perform one action depending on that value. For example I will use one potentiometer connected to on NodeMcu micro controller.
This controller will connect to the mqtt broker and will emit the value of the potentiometer (reading the analog input) into one topic (called “potentiometer”). We can code our NodeMcu with Lua but I’m more confortable with C++ and Arduino IDE. First I need to connect to my Wifi and then connect to broker and start emmiting potentiometer’s values
#include <PubSubClient.h>
#include <ESP8266WiFi.h>
// Wifi configuration
const char* ssid = "MY_WIFI_SSID";
const char* password = "my_wifi_password";
// mqtt configuration
const char* server = "<IP_ADDRESS>";
const char* topic = "potentiometer";
const char* clientName = "com.gonzalo123.nodemcu";
int value;
int percent;
String payload;
WiFiClient wifiClient;
PubSubClient client(wifiClient);
void wifiConnect() {
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("WiFi connected.");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
if (client.connect(clientName)) {
Serial.print("Connected to MQTT broker at ");
Serial.print(server);
Serial.print(" as ");
Serial.println(clientName);
Serial.print("Topic is: ");
Serial.println(topic);
}
else {
Serial.println("MQTT connect failed");
Serial.println("Will reset and try again...");
abort();
}
}
void mqttReConnect() {
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// Attempt to connect
if (client.connect(clientName)) {
Serial.println("connected");
client.subscribe(topic);
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
delay(5000);
}
}
}
void setup() {
Serial.begin(9600);
client.setServer(server, 1883);
wifiConnect();
delay(10);
}
void loop() {
value = analogRead(A0);
percent = (int) ((value * 100) / 1010);
payload = (String) percent;
if (client.connected()) {
if (client.publish(topic, (char*) payload.c_str())) {
Serial.print("Publish ok (");
Serial.print(payload);
Serial.println(")");
} else {
Serial.println("Publish failed");
}
} else {
mqttReConnect();
}
delay(200);
}
Now we will use another Arduino (with a ethernet shield).
We’ll move one servomotor depending to NodeMcu’s potentiomenter value. This Arduino only needs to listen to MQTT’s topic and move the servo.
#include <SPI.h>
#include <Servo.h>
#include <Ethernet.h>
#include <PubSubClient.h>
#define SERVO_CONTROL 9
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
Servo servo;
EthernetClient ethClient;
// mqtt configuration
const char* server = "<IP_ADDRESS>";
const char* topic = "potentiometer";
const char* clientName = "com.gonzalo123.arduino";
PubSubClient client(ethClient);
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] angle:");
String data;
for (int i = 0; i < length; i++) {
data += (char)payload[i];
}
double angle = ((data.toInt() * 180) / 100);
constrain(angle, 0, 180);
servo.write((int) angle);
Serial.println((int) angle);
}
void mqttReConnect() {
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// Attempt to connect
if (client.connect(clientName)) {
Serial.println("connected");
client.subscribe(topic);
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
delay(5000);
}
}
}
void setup()
{
Serial.begin(9600);
client.setServer(server, 1883);
client.setCallback(callback);
servo.attach(SERVO_CONTROL);
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
}
delay(1500); // Allow the hardware to sort itself out
}
void loop()
{
if (!client.connected()) {
mqttReConnect();
}
client.loop();
}
Finally we’ll use one Raspberry Pi with a Sense Hat and we’ll display with its led matrix different colors and dots, depending on the NodeMcu’s value. In the same way than the Arduino script here we only need to listen to the broker’s topic and perform the actions with the sense hat. Now with Python
import paho.mqtt.client as mqtt
from sense_hat import SenseHat
sense = SenseHat()
sense.clear()
mqttServer = "<IP_ADDRESS>"
red = [255, 0, 0]
green = [0, 255, 0]
yellow = [255, 255, 0]
black = [0, 0, 0]
def on_connect(client, userdata, rc):
print("Connected!")
client.subscribe("potentiometer")
def on_message(client, userdata, msg):
value = (64 * int(msg.payload)) / 100
O = black
if value < 21:
X = red
elif value < 42:
X = yellow
else:
X = green
sense.set_pixels(([X] * value) + ([O] * (64 - value)))
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(mqttServer, 1883, 60)
client.loop_forever()
The hardware:
- 1 Arduino Uno
- 1 NodeMCU (V3)
- 1 potentiometer
- 1 Servo (SG90)
- 1 Raspberry Pi 3 (with a Sense Hat)
Source code is available in my github.


Font and sizes
Letter grootte is: 22 px
Interlinie is: 33 px
Letter grootte is: 22 px
Interlinie is: 33 px
Vasilis: Web materials!
Espen: Is that what we’re calling it?
Vasilis: Yeah, I think that’s what we’re calling it.
Espen: ...I really like web materials, i'm surprised – i'm surprised there's no podcast called web materials or web fabric or any of these other other incarnations
Vasilis: Yeah, but then we're surprised not many people are interested in the material of the web so...
Espen: This is true, this is true. So, should we start by introducing ourselves a bit?
Vasilis: Yes, go ahead Espen, who are you?
Espen: Who am i? So I'm norwegian. I'm a... I was born in Drammen, this small town an hour outside of Oslo. I studied graphic design, then I moved to England and I studied graphic design there. And then I moved to Edinburgh, and then I started working as a magazine designer. And after a couple of years I kind of transitioned into web, pushing a lot of pixels around in photoshop and trying to make sense of early, early user experience. And then I found some lovely colleagues, we started ... we started a company called Primate. And I was there for seven years before I returned to Norway and then I worked briefly for a company called HyperRedink. That was a year and a bit. And then we moved back to to the UK to Scotland again and now I'm here, I'm freelancing and doing some product design for another company in Oslo. And I'm trying to figure out how, I can work with the material of the web better as a designer. It's taken me 15 years to realise that it is fundamentally different to print. So there you go. That's that's the short, short of my story. How about you? Who are you and where are you coming from?
Vasilis: So I'm Vasilis Van Gemert, I'm a lecturer at the University of Applied Sciences in Amsterdam, where I teach the next generation of digital product designers about the web. And before that, but that's seven years ago, I quit my job as a principal front end developer at mirabeau which is a large dutch full service web agency. I called it I quit working. So, I was always very frustrated there, and I guess we'll get to that why I was frustrated there probably the podcast is also about that. I have studied art. I've studied to become an art teacher but that's a long time ago, so that's my background. And I have, to design, I have this approach of maybe an artistic approach to design, and I have a scientific approach to design. So the science comes from my father who's a professor, and he always told me that there are no facts but there are hypotheses. So you can assume something, and then you can just work with that until you find proof that there's something else which makes more sense. But there is not such a thing as a truth, and it also means that you should doubt everything always all the time. So that's something I do. And then I have this artistic approach in which I say, okay I'll i just like to play with stuff and see what happens. So in short that's me and we'll get to know me better in the next couple of episodes I guess.
Espen: Yeah so...
Vasilis: I heard something very interesting you said that before you became a web designer you were a print designer and then at the end of your introduction you said it took you 15 years to realise that there's a difference between these two things. Can you tell me, what i was wondering about, is there a completely different approach to print design that we have to web design?. What are the main differences?
Espen: Well, so first of all, obviously earlier on then 15 years down the line I realised that there is, there are differences. Of course, you know first of all we're working with with essentially pixels on a screen as opposed to ink on paper so there's differences there. But what I learned, you know recently within the last five years maybe, is that I want, I'm starting to wonder that the differences of print and web goes beyond just working with relative units or percentages. I wonder if we should – we need to kind of change the whole mindset a little bit and i don't know to what, that's kind of what I'm here to figure out. But, but throughout it's like I spent far too many hours getting frustrated that we call it line height, and you know not leading, or we call you know there's different names for the for the spacing, you know we don't call them gutters, we call them tracks or whatever. Whatever it is it doesn't really matter now, but I used to get frustrated that print being such a established way and there's so many good design principles in, in graphic design via typography or layout or all these – all this knowledge. I felt like web sort of drew a line in the sand, and it was so based on technology that a lot of this theory behind design got lost. So then you have this new generation of designers designing for screens, and we've completely forget about typography, we don't worry about you know margins or proportions or whatever, and then it was a bit of a renaissance I think you know a decade ago when this started coming back in. But my whole career up until recently I felt like I wanted to bring design principles from design history, graphic design, onto the web. I still feel like that. But I'm also I'm also realising that just because CSS grid allows us to recreate the grids that we were used to from print it doesn't necessarily mean that the grids on the web should look like that or even work like that. Is there a completely new way of dividing up contents that works better for screens? Probably. But we're not doing that because, you know, we're – even the most fluid of designers are still essentially working on what's come come before, so. Yeah.
Vasilis: Recognisable. I like these ideas. This is, these are my thoughts as well. So I think about a decade ago I started reading all about print design, about typography and trying to translate, and these rules or guidelines that they use in print to the web. And there is some very interesting stuff that we can actually use and that that looks good. So a measure how wide should a piece of body text be, well there's not rules for it, but there are some guidelines that help you with designing, and these guidelines can even help you with designing a grid. These are interesting ideas. So studying graphic design, the the the art form of graphic design I think it makes sense. Makes a lot of sense. But then indeed, there is this question of should we base everything on this or should we extend it. And I think indeed we should extend it. There is so much more on the web and it's so much more complicated than a fixed canvas of this poster or paper that you're creating. That there's a different look should be there. And then there's also of course CSS. It changed from a language in which almost nothing was possible, to a language in which we don't even know what's possible. There's so much possible we haven't tried it out yet. So yes i'm certain that in the coming years web design will grow up and it will become something completely different than what we're used to now.
Espen: Yeah I certainly hope so. The question maybe is are we able to grow quick enough to keep up with the technology because it's changing so fast. I think now even people like yourselves, you know your your lecturer of digital design and as you know you use a lot of CSS and code in your work. Even you don't know the full extent of CSS. So then how how are – how's the average designer supposed to know what they can actually do with this new material? It's so it's so grand. The generation of print you know it took decades before new technology became available and now I feel like we have a generation of, of designers, and maybe I'm talking about my generation, the new generation that you're teaching they will grow up with CSS in their fingertips. My generation, we are very reluctant to even touch code. So how are we supposed to really explore the new material? If we're not, you know, touching it?
Vasilis: Okay. So I think I understand what you're saying. It's changing a lot. And there's all these new features, but it's not really changing that fast. I mean, grid, it took – the first time I heard about grid, I think that was in 2008. So it took over a decade to become real implemented. Right. So things are changing faster now. So I mean, border radius from the first implementation till it was, let's say, adopted to over a decade. But now, it takes about six weeks for a new feature that old browsers like to be implemented in all browsers. So that's, that's, things are changing quicker, that's true. And then you say it's CSS is so big. How can we learn that? Well, I'm not sure if you ever opened all the menu items in Photoshop or Illustrator? I mean, I've been working with Illustrator and Photoshop for over 20 years. And I still don't know what all these things mean. Right. So I think CSS is much easier than these programmes. Yet all designers use these programmes all the time. Do they understand the full scope of Illustrator? Of course not. Nobody does what maybe some people do, but most designers certainly don't. So it's just maybe it's a designers are learning the wrong tool. So instead of using learning something as complicated as illustrator, they should learn something as complicated as CSS. Or maybe tool makers are making the wrong tools. And this is something that I actually think is a problem, that we have the wrong tools for the job. So what the tool makers are doing is they're making tools in which we can design the website, we have the websites we have been designing. So but the tools are not there to create website that we can imagine. It's just what we have done before. And maybe that's why websites look like websites.
Espen: I think in a sense, obviously, you're right. Most websites now are designed by designers that don't code anyway, regardless of what tool they're using. And I think, I think in a sense, if people did spend their early careers or even time in university learning code, rather than learning illustrator or learning both, we would see different, vastly different web sites and what we see today, because I think, this experimentation that you really love with CSS and what you can actually do, it doesn't happen. It happens in a, in a front end environment where engineers and front end designers play, but it doesn't happen for for designers who are used to Photoshop or Figma or Illustrator. So certainly by using or learning a different tool, be it code or some sort of code based visual editor, we would we would see something else. But also, I think there's more than the tool that's keeping us to where we are. I do think, broadly speaking, you'd have to look at all the websites in the world and think there's probably a few things that just work. That we've you know, we've probably figured out some of it. You know, measurev line height, there's still some very, very basic typographic principles that we are, to some degree implementing. There are some patterns that are become very, very set, that it's hard to break. You know, we put the navigation at the top of our website. I don't think that's because the tools tell us to do that. I think that's because we all tell us tells us to do that we feel like it has to be at the top because it's always at the top. And my users are going leave if I put it somewhere else...
Vasilis: I wasn't even sure if they think about the users when they do that. So I once – when I still worked at Mirabeau, there was this interaction designer so and back then we had this waterfall way of working. So the interaction designer, he created a wireframe, and the wireframe went to the visual designer who opened it in Photoshop and started colouring by numbers. And then that Photoshop document was sent to me and all my knowledge was ignored. And it was only based on the good insights of the interaction designer. Now the interaction designer, I watched one interaction designer start a new project, so really from scratch, so we opened a blank document he created the header, edit the logo, edit seven or eight navigation items with lorem ipsum dolor sit amet, just words, and then he added a sub navigation to the left with 10 more navigation items, and then he added to the right, he added five or six widgets just room for widgets, and then at the bottom he added the footer with some links. And then... he just started perfecting, this and he didn't even look at the square, the small square in the middle that remained, he didn't ever look at it, and that was the content. And that's actually what your people, what your visitors are there for, he didn't look at it for the first day. And I don't think – I asked him, well, what, why? Oh no but this is what websites look like, so it wasn't this is what users expect, or this is what we what's proven to work. No that was just how we made websites back then, and we changed that idea, I mean nowadays websites don't have a sub navigation to the left, most websites at the top.
Espen: Yeah.
Vasilis: Most websites don't have widgets on the right. Or we still see them but but that's not the, it's not necessary anymore.
Espen: Yeah we've changed...
Vasilis: So I think these ideas they they they can change of course.
Espen: Yeah, they, the what a website looks like changes over time but we still have, we – everybody knows now what a website looks like. So it's changed from what it what it looked like back then with a with a sidebar widgets and stuff, but it's still there's still a fairly uniform look to it I think.
Vasilis: I'm very much looking forward to discussing some of these ideas in more more detail with you in the coming weeks. I mean this is incredible. I'm sure we will get into detail about, where should the header be?
Espen: I can't wait to discuss that. Should we have hamburger menus?
Vasilis: Yeah and what is a hamburger menu and where should the navigation be. Yep, very interesting questions. These are questions about real estate as well so we'll get back to the grid. So what should a grid look like. I think we will jump between print design and web design all the time just for reference because there are things out of knowledge there.
Espen: I think so yeah. And in the same way we will talk about design vs code. We'll probably have a episode where you get angry about current design, the state of current design tools.
Vasilis: Yeah we have a long list of topics actually. We'll talk about accessibility of course. About interaction, which weirdly enough is something that is largely ignored in the design community. Which is very strange, of course, because interaction is, such an important part of the web. Without interaction there was no web. Yet most articles are about grid. It's about layout..
Espen: Yeah. And most interaction is the hover state and that's that's that.
Vasilis: Yeah yeah yeah.
Espen: Yeah. I also want to talk about accessibility and contrast and visual accessibility. How – how reliant we are on algorithms and some, some dogma, some ruleset that other people have decided for us. Is that is that the way to go, you know, does the algorithm know exactly what contrast to use. I want to talk about content as it is. We touched on it before. How, you know, 10 years ago, and even today, a lot of a lot of design is basically style up a nice menu, have a nice footer, have some cool colours, and then we leave this blank empty space, that maybe we fill it with some stock imagery and lorem ipsum. But really, why is it that on the web, eh, we put the content in last. I mean in magazine design you don't do that, you have a template. And then you use the template to work with the actual words that your editor wrote.
Vasilis: And the actual images that the photographer delivered for this article.
Espen: It's very strange. We don't do that anymore. Yeah.
Vasilis: Yeah. Very interesting to discuss that. So I guess this is something that maybe is, the way that CMSes is are built?
Espen: Yes.
Vasilis: It could be that CMS is don't allow us to, create these beautiful layouts and different layouts in our direction, as easy as it is on in magazines.
Espen: Yeah. It takes a long time to build a website comparatively. Whereas, as I say, the reason why I think tools like figma will stay for a long time coming is the sketching is so much quicker. And in InDesign, or Illustrator, making a layout, it's quicker to make amends and to try new things, which is why you can experiment more visually. And you're right once, especially once you have a CMS behind it. It's like, Oh okay, let's go spend the day trying to get this this new layout to work? Or should we just use the layout we have? And also because we have the CMS, the responsibility of writing and inputting content, it's, it's left in the air. But we were we struggle with it for seven years at Primate. Whose job is the content? Oh no, we'll do it, says the client will write the content, don't worry. When do you need it by it? Well, can we have it now? Oh no, no, no, we'll write it later. But you know, a couple of weeks before launch. So then what are you supposed to do?
Vasilis: Yeah, and then there's, of course, I mean, so we have this editorial process, which is maybe in the way of good web design. We have designer tools and designer knowledge and designer fear of code, maybe, that's in the way of proper design, web design. And then there's developers, who are mostly concerned with developer experience. Now I'm exaggerating, but this is something that I, I see that – I mean, if you look at the tools they're making, it's mostly for themselves and not that much for the user experience. And so there's also the constraint from the developers who say, No, no, no, you cannot design it that way. Because we use this and this layout tool.
Espen: Yeah. And even, even the setup of the tools themselves... the barrier to entry, to start some project from scratch, if you want this framework or that preprocessor, suddenly, you have to ...
Vasilis: This is also a very interesting topic, that when we started with the web, you just wrote some HTML, and some CSS and try to figure out how an FTP programme works. You copy your code to the server and you're done. If I look at my students now, they open a terminal type some NPM code, then they wait for a few minutes, because all this stuff has to be downloaded. And this is just for a simple CSS course. Well, all they have to do is type some CSS in the CSS file. No, a complete server is download it and run every time. So that changed as well. So the idea of the web that it's there for everybody... Well, everybody can still use it, but the... it's still it's becoming harder and harder to start with it, I think.
Espen: Yeah, I think now, the web is there for everybody in the same way, a piece of paper and a crayon is there for every print designer out there. You know, you can't – it's becoming harder to just publish something really easy. Having said that, without, without putting money in anyone's pockets, Netlify it has, for me at least done something incredible, which is when I built, I can't remember what I built, some small tests and I just wanted to share it with someone online and it was literally drag and drop from my folder to this folder and boof it was up. So there are, you know, there's maybe there's, there's... there's developments happening in that area as well.
Vasilis: Sounds like netlify reinvented FTP that's incredible!
Espen: Exactly. FTP without the FTP software in the middle.
Vasilis: Great. I'm so much looking forward to discussing discussing all these topics in more detail. So the plan, if I understand correctly, is we will do an episode every now and then.
Espen: Yes, very strict schedule of every now and then...
Vasilis: Yeah. We have a long list of topics. I mean, feedback from the listeners, if there are any, is very welcome, of course. So if you have anything to say, dear listener, please contact us on Twitter or email or any other contact means that you are able to find. So, another thing we are planning is, of course, we have a website with this podcast. I mean, a podcast about web design should have a designed website. And we are thinking about art directing every new episode. It doesn't mean that we make a completely new layout or design for every episode. But we want to iterate on the previous episode. Or we want to contemplate the topic we discussed. So if a topic is about grid, well, maybe we should experiment a little bit with grid in the art direction of that episode. So this is something that we're planning. Are there any other plans?
Espen: No, I think I think you're covered it. We do one topic a week we talk about it, we... we try and design or create something around it. And then we keep going until we don't have the time or or we grow too old.
Vasilis: Or until we're done.
Espen: Until we're done. Yeah that's true. Yeah, maybe we'll finish the internet.
Vasilis: Yeah. Maybe we just yeah, we finished it. And we come to a conclusion after a few weeks.
Espen: That would be nice. Yeah, a couple episodes in, we sit down, we just write the final blog post that decides everything.
Vasilis: So much looking forward to this. There was one more thing. But I forgot about that. Oh, yeah. And of course, we will add a transcript of every episode. So if you don't like listening, or you cannot listen to the podcast for any reason, you can read it. And we'll see how we design that as well. Maybe we can do something clever with the transcript as well. So.
Espen: Yes maybe, really, really pale grey text on a clean background. So cool design. You know, trying to really challenge contrast a little bit.
Vasilis: Good. Yeah. Because we're pretty hard to understand anyway. So it should be hard to read as well. Right?
Espen: Yeah I think we should match. Yeah, that's a good idea. We should match the type of typography to our accents. So that is equally challenging for everybody.
Vasilis: Excellent. Espen.
Espen: Right. Have we reached the end of the first episode Vasilis?
Vasilis: I think we have.
Espen: Excellent. Well, it's good talking to you.
Vasilis: It was really good talking to you. Looking forward to the next episode.
Espen: See you then.
Vasilis: Okay, bye bye


Use this list to select how you want to build and run
your project. Use Gradle as a default option or select IntelliJ IDEA.
In this case when you select Build | Build Project from the main menu, IntelliJ IDEA
goes through source sets in all modules executing the Gradle task
classes
.
If you have a pure Java or a Kotlin project, it is sometimes better to select IntelliJ IDEA for building a
project. IntelliJ IDEA supports the incremental build
which significantly speeds up the building process. Yet, keep in mind that the IntelliJ IDEA compiler does not
support some parts of the Gradle project build processing and might cause problems in building your project
correctly.


WITNESS LIST Agriculture & Livestock Committee February 8, 2005-8:00A Bd of Veterinary Medical Examiners On: Allen, Ron (Texas Board of Veterinary Medical Examiners) Soil & Water Conservation Board On: Foster, John (Texas State Soil & Water Conservation Board) Isom, Rex (Texas State Soil & Water Conservation Board) Oswald, Johnny (Texas State Soil & Water Conservation Board) Structural Pest Control Board On: Burnett, Dale (Texas Structural Pest Control Board) Texas Food & Fibers Commission On: Avant, Bob (Texas Food & Fibers Commission)


- calendar - Variable in class com.example.bot.spring.KitchenSinkController
-
Starting date of the ice cream coupon activity as an calendar obejct
- check_available(String) - Static method in class com.example.bot.spring.CouponDB
-
This function is going to check the user list whether a user can get the coupon or not
It depends on the message stored in the follow and coupon column in the user list table
- check_code(String) - Static method in class com.example.bot.spring.CouponDB
-
This function is going to check the coupon code in coupon table
If exist return the user id
If not exist return null
- check_day(String) - Static method in class com.example.bot.spring.User
-
This function is going to check the days from now to the target date
if get the target date from the user list and change it into the Date type
And then we calculate the days by the two date
- check_followtime(String, Date) - Static method in class com.example.bot.spring.User
-
This function check the user's follow time depending on the coupon begin date
- check_goal(String) - Static method in class com.example.bot.spring.User
-
This function is going to check whether the user achieve the goal or meet the target date
It has four different conditions which can be used in the controller to push message to the user
- check_userlist(String) - Static method in class com.example.bot.spring.UserDB
-
This function is going to check the database whether a user id is in the user list
- checkAppropriate(String, String) - Static method in class com.example.bot.spring.Food
-
This method check whether a food is appropriate for a user to have
- checkNutrition(String) - Static method in class com.example.bot.spring.Food
-
This method check for the nutrition of a given food
- code_call(String, String) - Method in class com.example.bot.spring.Coupon
-
This function is going to check when the user try to get the coupon
It returns the user id of the coupon giver only if the user can get the coupon and the coupon exist
And What's more, the code does not belong to the user and the coupon hasn't been sold out
- com.example.bot.spring - package com.example.bot.spring
-
- Coupon - Class in com.example.bot.spring
-
This class is going to do the tasks directly related to the coupon
This is a singleton class
- Coupon() - Constructor for class com.example.bot.spring.Coupon
-
- coupon - Static variable in class com.example.bot.spring.Coupon
-
This is a private static member coupon to let the class be a singleton
- coupon_date - Variable in class com.example.bot.spring.KitchenSinkController
-
Starting date of the ice cream coupon activity as an date obejct
- CouponDB - Class in com.example.bot.spring
-
This class is going to connect to the psql database and change/get the data in coupon table
- CouponDB() - Constructor for class com.example.bot.spring.CouponDB
-
- create_usertable(String) - Static method in class com.example.bot.spring.UserDB
-
This function is going the create a new user table with the name of user id
- createMenuImage(String, URI) - Static method in class com.example.bot.spring.Food
-
This method insert menu of image type into the database, with a user ID and the name of the foods in the menu
- createMenuJson(String, String) - Static method in class com.example.bot.spring.Food
-
This method insert menu of json type into the database, with a user ID and the name of the foods in the menu
- createMenuText(String, String) - Static method in class com.example.bot.spring.Food
-
This method insert row(s) into the database, with a user ID and the name of the foods in the menu
- createTempFile(String) - Static method in class com.example.bot.spring.KitchenSinkController
-
This method is used to created temperory file for downloaded content
- createUri(String) - Static method in class com.example.bot.spring.KitchenSinkController
-
This method create URL string for the object on the corresponding path
- DBdeleteMenu(String) - Static method in class com.example.bot.spring.FoodDB
-
This function is going to delete all the rows in menu table of the given user id
- DBexist(String) - Static method in class com.example.bot.spring.FoodDB
-
This function is going to check whether a food name can be found in the database
- DBgetMenu(ArrayList<String>, String) - Static method in class com.example.bot.spring.FoodDB
-
This function is going to search in the menu table
And get a arraylist with food name
- DBgetTip(int) - Static method in class com.example.bot.spring.FoodDB
-
This function is going to get tips from database
- DBInsertMenu(String, String, String) - Static method in class com.example.bot.spring.FoodDB
-
This function is going to insert a row into the menu table with the user id and the food name and price
- DBsearch_day(String, String) - Static method in class com.example.bot.spring.UserDB
-
This function is going the search the data in the user table on a exact given date
It will return the data on the given day
- DBsearch_record(String) - Static method in class com.example.bot.spring.UserDB
-
This function is going to search the whole user table
It will search the table depending on the date and add the information on the same date together
It will return the data in a 2D arraylist with one date added together
- DBSearchIngredient(String) - Static method in class com.example.bot.spring.FoodDB
-
This function is going to search a ingredient of the food in the database
It search for the given food name and get the average of all those data found
- delete(String) - Static method in class com.example.bot.spring.User
-
This function is going to delete the user from user list and also delete the user table and the user's coupon in coupon table
- delete_code(String) - Static method in class com.example.bot.spring.CouponDB
-
This function is going the delete the coupon code in the coupon table(the whole role)
- delete_id(String) - Static method in class com.example.bot.spring.CouponDB
-
This function is going to delete the coupon table's row with the given user id
It will delete all the rows with the given user id
- delete_record(String, String) - Static method in class com.example.bot.spring.User
-
This function is just created for the test case
This function is going to delete the corresponding row in the user table
And it is not used in the controller
it just use one function in the userDB class to connection to the database
- delete_user(String) - Static method in class com.example.bot.spring.UserDB
-
This function is going to delete the user's row from the user list table
First to check whether the user's row exist
And then delete the corresponding user row
- deleteRecord(String, String) - Static method in class com.example.bot.spring.UserDB
-
This function is just created for the test case in order to delete the corresponding record we insert through the test case
It is not used in the controller
- DownloadedContent() - Constructor for class com.example.bot.spring.KitchenSinkController.DownloadedContent
-
- downloadedContentDir - Static variable in class com.example.bot.spring.KitchenSinkApplication
-
- drop_table(String) - Static method in class com.example.bot.spring.UserDB
-
This function is going to drop a user table with the user id
- generateSummary(String) - Static method in class com.example.bot.spring.User
-
This function is going to generate a summary from the user table
It will calculate all the data since the user first user the chatbot and add them together
And then it will output a simple summary of the user's intake overall
- generateWeeklySummary(String) - Static method in class com.example.bot.spring.User
-
This function is going to generate at most 7 days summary from the user table record
It will calculate the average intake and weight of the user
And also output everyday's record
- getConnection() - Static method in class com.example.bot.spring.CouponDB
-
This function is going to get connection to the psql in heroku
- getConnection() - Static method in class com.example.bot.spring.FoodDB
-
This function is going to connect the psql in heroku
- getConnection() - Static method in class com.example.bot.spring.UserDB
-
This function is going to connect the data base in heroku
- getCoupon() - Static method in class com.example.bot.spring.Coupon
-
This is a singleton implementation of the coupon object.
- getDailyIntake(String, String) - Static method in class com.example.bot.spring.User
-
This function is going to get the energy the user has consumed at certain day
It use the function DBsearch_day in the userDB.class to get the record at certain day
- getIdealDailyIntake(String) - Static method in class com.example.bot.spring.User
-
This function is going to calculate the ideal daily intake of the user depend on the information in the user list
It will get the data from user list and divide them into daily intake
- getMenuInfo(String) - Static method in class com.example.bot.spring.Food
-
This method print out the menu information of a user
- getQuality(String) - Static method in class com.example.bot.spring.Food
-
This method takes a food name and return the energy, sodium, fatty data
- getTip() - Static method in class com.example.bot.spring.Food
-
This method go to the database storing tips to retrieve a health tip
- getUser(String, String) - Static method in class com.example.bot.spring.User
-
This function is going to get user data from the user list
it calls the function select_userlist in the userDB.class to get the result
- handleAudioMessageEvent(<any>) - Method in class com.example.bot.spring.KitchenSinkController
-
This method is used to handle audio message event from the user by replying the same audio back to user.
- handleBeaconEvent(BeaconEvent) - Method in class com.example.bot.spring.KitchenSinkController
-
This method is used to handle beacon event from user by sending a text message
- handleFollowEvent(FollowEvent) - Method in class com.example.bot.spring.KitchenSinkController
-
This method is used to handle follow event from new user by inserting the new into user database
, setting state of user to be "set name" and giving welcoming message
- handleImageMessageEvent(<any>) - Method in class com.example.bot.spring.KitchenSinkController
-
This method is used to handle image message event from the user by replying the same image back to user.
- handleJoinEvent(JoinEvent) - Method in class com.example.bot.spring.KitchenSinkController
-
This method is used to handle join event from user by sending a text message
- handleLocationMessageEvent(<any>) - Method in class com.example.bot.spring.KitchenSinkController
-
This method is used to handle location message event from the user by replying the same location back to user.
- handleOtherEvent(Event) - Method in class com.example.bot.spring.KitchenSinkController
-
This method is used to handle other events not metioned in the class from user by sending a text message
- handlePostbackEvent(PostbackEvent) - Method in class com.example.bot.spring.KitchenSinkController
-
This method is used to handle postback event from users
- handleSetState(String, String, String[], String) - Method in class com.example.bot.spring.KitchenSinkController
-
This method is used to handle user state setting in order to update users' basic information
- handleSticker(String, StickerMessageContent) - Method in class com.example.bot.spring.KitchenSinkController
-
This method is used to reply sticker to user
- handleStickerMessageEvent(<any>) - Method in class com.example.bot.spring.KitchenSinkController
-
This method is used to handle sticker message event from the user by replying the same sticker back to user.
- handleTextContent(String, Event, TextMessageContent) - Method in class com.example.bot.spring.KitchenSinkController
-
This method is used to handle text content of a message from user
- handleTextMessageEvent(<any>) - Method in class com.example.bot.spring.KitchenSinkController
-
This method is used to handle text message event from user, the detailed handling is passed to handleTextContent function
- handleUnfollowEvent(UnfollowEvent) - Method in class com.example.bot.spring.KitchenSinkController
-
This method is used to handle unfollwer event from user by deleting the user from user database
- handleUpdateState(String, String, String[], String) - Method in class com.example.bot.spring.KitchenSinkController
-
This method is used to input users' basic information.


Review question
Home
Reviews
Questions
Review
Approve
Approve question
Comment
Submit
Cancel
Reject
Reject question
Comment
Submit
Cancel