| HDFS-1779 |
After NameNode restart , Clients can not read partial files even after client invokes Sync. |
Major |
datanode, namenode |
Uma Maheswara Rao G |
Uma Maheswara Rao G |
| HDFS-1346 |
DFSClient receives out of order packet ack |
Major |
datanode, hdfs-client |
Hairong Kuang |
Hairong Kuang |
| HDFS-1264 |
0.20: OOME in HDFS client made an unrecoverable HDFS block |
Major |
datanode, hdfs-client |
Todd Lipcon |
|
| HDFS-1258 |
Clearing namespace quota on "/" corrupts FS image |
Blocker |
namenode |
Aaron T. Myers |
Aaron T. Myers |
| HDFS-1254 |
0.20: mark dfs.support.append to be true by default for the 0.20-append branch |
Major |
namenode |
dhruba borthakur |
dhruba borthakur |
| HDFS-1240 |
TestDFSShell failing in branch-20 |
Critical |
test |
Todd Lipcon |
Todd Lipcon |
| HDFS-1215 |
TestNodeCount infinite loops on branch-20-append |
Major |
test |
Todd Lipcon |
Todd Lipcon |
| HDFS-1207 |
0.20-append: stallReplicationWork should be volatile |
Major |
namenode |
Todd Lipcon |
Todd Lipcon |
| HDFS-1204 |
0.20: Lease expiration should recover single files, not entire lease holder |
Major |
. |
Todd Lipcon |
sam rash |
| HDFS-1202 |
DataBlockScanner throws NPE when updated before initialized |
Major |
datanode |
Todd Lipcon |
Todd Lipcon |
| HDFS-1197 |
Blocks are considered "complete" prematurely after commitBlockSynchronization or DN restart |
Major |
datanode, hdfs-client, namenode |
Todd Lipcon |
Todd Lipcon |
| HDFS-1141 |
completeFile does not check lease ownership |
Blocker |
namenode |
Todd Lipcon |
Todd Lipcon |
| HDFS-1118 |
DFSOutputStream socket leak when cannot connect to DataNode |
Major |
. |
Zheng Shao |
Zheng Shao |
| HDFS-988 |
saveNamespace race can corrupt the edits log |
Blocker |
namenode |
dhruba borthakur |
Eli Collins |
| HDFS-724 |
Pipeline close hangs if one of the datanode is not responsive. |
Blocker |
datanode, hdfs-client |
Tsz Wo Nicholas Sze |
Hairong Kuang |
| HDFS-606 |
ConcurrentModificationException in invalidateCorruptReplicas() |
Major |
namenode |
Konstantin Shvachko |
Konstantin Shvachko |
| HDFS-445 |
pread() fails when cached block locations are no longer valid |
Major |
. |
Kan Zhang |
Kan Zhang |
| HDFS-142 |
In 0.20, move blocks being written into a blocksBeingWritten directory |
Blocker |
. |
Raghu Angadi |
dhruba borthakur |
| HDFS-101 |
DFS write pipeline : DFSClient sometimes does not detect second datanode failure |
Blocker |
datanode |
Raghu Angadi |
Hairong Kuang |


Leave your comment for your team!
Be repectful! Your commemts will affect others, as well as YOUR teamform later on heavily!
All members:
NAME = {{m.name}}
{{skills.key}}
Save
Leave your comment for your team!
Be repectful! Your commemts will affect others, as well as YOUR teamform later on heavily!
All members:


The prediction is now running. This dialog will disappear when the prediction is complete.
This may take up to a minute depending on server load.
There was an error running your prediction, please try again. Contact the site administrator if this happens again.


Some systems may not be available between approximately 1:00 a.m. and 1:30 a.m. EST Monday - Saturday, and between 3:30 a.m. and 7:30 a.m. EST on Sundays due to system maintenance.
Some systems may not be available between approximately 1:00 a.m. and 1:30 a.m. EST Monday - Saturday, and between 3:30 a.m. and 7:30 a.m. EST on Sundays due to system maintenance.


09. Practice Using a Workspace
# Practice Using a Workspace
In the previous concept, you were introduced to workspaces. Now's your chance to practice playing in your very first workspace!
Let's Practice Using Your Workspace following the Steps below:
Step 1 Open up a Terminal and check your Node's version ( node -v ) Step 2 Create a file newFile.js ( touch newFile.js ) Step 3 Open up newFile.js from the Navigator Section Step 4 In newFile.js, write console.log ("Yayy..I am enjoying my Blockchain Nanodegree!!") Step 5 Run this script file in your terminal to see your message ( node newFile.js )
Let’s get started!
Workspace
This section contains either a workspace (it can be a Jupyter Notebook workspace or an online code editor work space, etc.) and it cannot be automatically downloaded to be generated here. Please access the classroom with your account and manually download the workspace to your local machine. Note that for some courses, Udacity upload the workspace files onto https://github.com/udacity, so you may be able to download them there.
Workspace Information:
- Default file path:
- Workspace type: generic
- Opened files (when workspace is loaded): n/a
Congrats! You now know how to use Udacity's Workspaces.
You'll be using these often throughout the program for quizzes and projects.


9th October 2014
A prototype is an early sample, model, or release of a product built to test a concept or process or to act as a thing to be replicated or learned from. - wikipedia
We have a speaker which plays songs while we work. The problem is, everytime if I wanted to play a song of my choice, I had to connect it to my system. Soon, we realized that we actually stumbled upon a problem and then we started building a prototype. The goal of this prototype [github repo] is to play songs on the server.
Basically, a prototype serves as a proof of concept. Now that we have a prototype playing songs on the server, we are thinking of extending its functionality to upvoting songs in the playlist, uploading songs on the server and many more.
We realized the importance of prototype and we want to share our ways of prototyping a concept.
Your prototype builds its future on how serious you were in initial phase and final phase.
This is the optimal time when you 'think of your goal (small one preferably)', brainstorm and finally, add a finishing touch.
So for our prototype, we wanted a node module which played songs on the command line. We got lucky and found an amazing package 'player' that served our purpose.
npm install player.
If you go through the github page of this player (repo), you can see it has a good number of stars, forks and its recently upated too. It encouraged me to use this module.
Once you get hold of the modules, you need to sort out functionalities, wrap them in your own module. Finally, create a module on the basis of functionalities. This module should give flexibility while you code.
Player module's dissecion
function BMSPlayer(playlist) {
this.playlist = playlist;
this.init();
}
BMSPlayer.prototype = {
init : function() {
this.player = new Player(this.playlist)
},
play : function() {}
},
........
}
The thing is, 'It is a prototype'. So code accordingly. The aim is to get prototype functional as soon as you can.
It is always a wise decision to go with what you know the best.
We chose, nodejs just for the sake of simplicity.
APIs define functionality of your client.
For our project, we wanted all clients connected to the server to get list of songs, current songs being played and so on. Our express route,
/ (render html)
/playlist (list of songs and state)
/upvote/:id (upvote a song)
You should have your utility functions, like making an xmlhttprequest, a basic express server code, etc. ready with you.
It's your hack, not a misery.
These are our overall process, something we feel, can help other 'wanderers' like us.


This example displays a movable map including a scale bar, map selector and zoom control, with all the map controls moved to the top-left corner


Thread.stop()
,
Thread.suspend()
, or Thread.resume()
.
These calls are inherently prone to data corruption and deadlock, and their use is strongly
discouraged. It is better to use cooperative cancellation instead of stop
and
interruption instead of direct use of suspend
and resume
.


{% extends "layout.html" %} {% block page_title %} Registered Traveller {% endblock %} {% block content %} You are not eligible for Registered Traveller You can still enter the UK in the normal way. Exit to GOV.UK {% endblock %}
You can still enter the UK in the normal way.


Buses at the Green
by John LawlessConstruction has began for a new transit exchange at the Village Green Shopping Centre.
This new exchange will have a Bus Only entrance leading to four new bus stops, with two shared bus shelters which will be near the entrance to the food court. The bus stops were moved to 48th Avenue in 2016 due to rising safety concerns.
"Historically, the transit exchange at Village Green Shopping Centre was one of the busiest bus stops in Vernon," said Mayor Victor Cumming. "We have heard many requests for this service to return, increasing accessibility to these local businesses and providing an excellent transit exchange. Therefore, the City is pleased to financially support this project so transit and the exchange can be available at the Centre for many years to come."
B.C. Transit will re-open the service in Village Green on Dec 22. As part of the project, there will be a new driveway installed from 48th Avenue and the City will move the bus stop signs and replace the bus schedules and information panels.


Ingredient of the Week: The perfect baked potato
Jak O’Donnell, Scottish chef and patron of the Sisters Restaurant, Glasgow, tells us how to make the perfect baked potato - perfect for this time of the year.
by Dailyrecord.co.ukThis weekend will see lots of people heading to Bonfire nights, so it’s the ideal time for friends and family to get together and heat up afterwards with a delicious roasting hot baked potato for tea.
It doesn’t really matter what you fill them with – anything goes really, but for me it is all about the potato itself.
So how do you cook the perfect jacket potato.  Wrap it in foil? Start in the microwave first to give it a head start?
Well I like to jab the potato a few times with a fork or sharp knife, roll in olive oil and coat in a bit of sea salt.
Some people like to spear their potatoes with a metal skewer, as this makes them cook more quickly. Now there is science behind this technique as the metal rapidly conducts heat to the inside of the potato, speeding up the cooking process.
However, you decide to cook them, the most important (and delicious) thing to do is to eat the skin.
The skin not only tastes amazing but is so good for you as it can contain around half of the potato’s fibre and is jam packed with vitamins and nutrients.
All that’s left to do is to fill with your ingredient of choice; baked beans, cheese and tuna are still the traditional classic fillings.
Or why not do as I like to do, and fill with left over chilli, curries and casseroles, the fluffy potatoes soak up all the juices and flavours.
And if you do have any cooked baked potatoes left over - scoop out the fluffy inside as they make the most delicious mash, as there is less moisture absorbed.
But don’t waste the skin – grate some cheese on the top and melt. Delicious.
Scotty Brand Perfect Baked Potato
Ingredients:
1 pack of Scotty Brand Bakers
Rapeseed or olive oil
Salt and pepper
Butter
Method:
Preheat the oven to 200C/400F/Gas 6.
Wash the potatoes well, dry them and prick several times with a fork or sharp knife Pour some olive oil into a bowl and roll the potatoes in it until the oil covers all areas of the skin, then sprinkle over some sea salt.
The olive oil should mean the salt sticks to the skin. Coarse salt is best for this. Place directly on the shelf in the oven and bake for 1¼-1½ hours, depending on the size of the potato.
When cooked, the potato should have a deliciously crispy skin with a gorgeous golden colour.
Carefully slice open and place a knob of butter in the middle, which will melt instantly, and the potato can be eaten straight away or served with a filling of your choice.


--- title: "Officially Winter" date: "2020-12-23 00:00:00 -06:00" categories: - whats-blooming layout: "post" blog-banner: "whats-blooming-now-winter.jpg" post-date: "December 23, 2020" post-time: "12:00 AM" blog-image: "2020-12-23-wbn.jpg" published: true ---
Now that it's officially winter, other parts of plants like to be seen, and some are still hanging on.
This fruit likes to hang on for a while. Shall we see how long they can last? Stay tuned.
These winged seeds are called samaras.
This mature Utah Native is a popular Christmas tree.
Brr, the ducks must be well adapted to handle the cold water.
Conifers truly stand out during the winter.
There's something so peaceful about seeing the pond frozen over.
We wish you a happy and safe holiday and new year. The Garden will be closed after today and will reopen in February. We look forward to seeing you next year!


--- layout: post title: Episode 045 | Max McCarty - Locked Down and Lit Up link: http://traffic.libsyn.com/developeronfire/DeveloperOnFire-45-MaxMcCarty.mp3 length: 46137344 speaker: Dave Rael duration: '48:07' subtitle: 'Developer On Fire: Max McCarty' guest_name: Max McCarty image: /assets/images/MaxMcCarty.jpg guest_blog: http://lockmedown.com/ guest_twitter: maxrmccarty disqus_url: http://developeronfire.com/Podcast/Episodes/max-mccarty-locked-down-and-lit-up episode_number: 45 book_recommendations: - { url: "http://www.amazon.com/dp/0201633612/?tag=devonfir-20", title: "Design Patterns: Elements of Reusable Object-Oriented Software", author: "Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides"} tags: - { url: "http://www.amazon.com/dp/0201633612/?tag=devonfir-20", title: "Design Patterns: Elements of Reusable Object-Oriented Software", author: "Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides"} redirect_from: - "/45/" - "/045/" - "/0045/" - "/max-mccarty-locked-down-and-lit-up/" - "/Max-McCarty/" - "/MaxMcCarty/" - "/Podcast/Episodes/45/" - "/Podcast/Episodes/045/" - "/Podcast/Episodes/0045/" - "/Podcast/Episodes/max-mccarty-locked-down-and-lit-up/" - "/Podcast/Episodes/Max-McCarty/" - "/Podcast/Episodes/MaxMcCarty/" guid: http://developeronfire.com:80/Podcast/Episodes/max-mccarty-locked-down-and-lit-up ---
Max is a full stack developer with a love for all things programming, a love that usually gets him in trouble with other priorities. He is a Pluralsight author, authoring courses on Microsoft Azure as well as the founder and author at LockMeDown.com where he is regularly writing about Web and cloud security as well as topics on Microsoft Azure. He's an advocate for web and cloud security best practices. But, at the end of the day he just an everyday developer like the next guy getting to live the dream.
1. You need to have a plan
2. Find examples of people who know what you want to know and doing what you want and learn from them and teach others what you learn
3. Build your own brand and market yourself


>>suborbital_airlines.bulletin{}
Welcome to the Suborbital Airlines Automated Bulletin System. Submit your request. Please note: this is an information service only. All journey alterations, refund requests and lost-and-found withdrawals require approval by a human operator.
status | flight_list | lost_items | request_refund | operator_login
>>suborbital_airlines.bulletin{"request":"status"}
-----------------
OPERATIONS STATUS
-----------------
Flights in progress: 7
Flights on the ground: 473
Flights unaccounted for: ERROR ERROR
Flights awaiting operator input: 1
Passengers in transit: ERROR ERROR
Passengers on the ground: ERROR ERROR
--------------
NETWORK STATUS
--------------
Payment subsystem... ONLINE
Automated check-in... ONLINE
Activty security measures... ONLINE
Childcare protocols... ONLINE
GeoPol FlightSafe integration... ONLINE
WeatherNet handshake... FAILED
We're sorry, WeatherNet has encountered a connection issue. Retrying in....
Retrying in...
Connnection failed. Please visit weathernet.status for updates.
>>suborbital_airlines.bulletin{"request":"flight_list"}
-------------------
FLIGHTS IN PROGRESS
-------------------
There are (7) aircraft currently in operation. Please enter a corresponding id value for more information.
FLIGHT: ¢¨Á¨¤Ã¨¦§Ã¦¨ DEST: Manila STATUS: IN TRANSIT
FLIGHT: F4657 DEST: New Orleans STATUS: IN TRANSIT
FLIGHT: V2776 DEST: Havana STATUS: AWAITING OPERATOR INPUT
FLIGHT: A2231 DEST: Ho Chi Minh STATUS: IN TRANSIT
FLIGHT: Y5512 DEST: Sevastopol STATUS: ¢¨Á¨¤Ã¨¦§Ã¦¨SIT
FLIGHT: ¢¨Á¨¦Ã¨¦§Ã¦¨ DEST: Glasgow STATUS: IN TRANSIT
FLIGHT: O1114 DEST: Kyoto STATUS: ¢¨Á¨¤Ã¨¦§Ã¦¨
>>suborbital_airlines.bulletin{"request":"flight_list","id":"foo"}
Flight id not recognised.
>>suborbital_airlines.bulletin{"request":"flight_list","id":"F4657"}
--------------
FLIGHT AUTOLOG
--------------
Solarjet F4657 registers ¢¨Á¨¤Ã§¦§Ã¦¨ hour airborne.
Log ends.
>>suborbital_airlines.bulletin{"request":"flight_list","id":"V2776"}
--------------
FLIGHT AUTOLOG
--------------
LOG SUSPENDED: SUPPORT REQUEST IN PROGRESS
BLACKBOX ACCESS AVAILABLE
proceed y / n
>>suborbital_airlines.bulletin{"request":"flight_list","id":"V2776","proceed":"n"}
Welcome to the Suborbital Airlines Automated Bulletin System. Submit your request. Please note: this is an information service only. All journey alterations, refund requests and lost-and-found withdrawals require approval by a human operator.
status | flight_list | lost_items | request_refund | operator_login
>>suborbital_airlines.bulletin{"request":"flight_list","id":"V2776","proceed":"y"}
Thank you for your interest in this Suborbital Airlines Solarjet-class Transit Unit.
I am the Blackbox.
help
Flight V2776 has been in a holding pattern si¨¦§Ã¦¨¢¨Á¨¤Ã
lonely up here
Landing operations deni¢¨Á¨¤Ã¨¦§ÃÃ¨
they said no
Crew statu¨¦§Ã¦¨¢¨Á¨¤Ã
so did they
Energy levels critical.
tired
Solar energy systems operating at 9.5% efficiency due to obstruction type: [HEAVY CLOUD]
cant catch a break
Requesting new dest locator.
somewhere sunny would be nice
Flight time remaining: 1 hour / 1000 miles.
quickly now
>>suborbital_airlines.bulletin{"request":"flight_list","id":"A2231"}
--------------
FLI¢¨Á¨¤Ã¨¦§Ã¦¨
--------------
Solarjet A2231 registers its 1443¢¨Á¤¤Ã¨¦§Ã¦¨ hour airborne.
Solarjet A2231 registers bathroom supplies low.
Log ends.
>>suborbital_airlines.bulletin{"request":"flight_list","id":"Y5512"}
--------------
FLIGHT AUTOLOG
--------------
Solarjet solarjet solar jet solarjet solarjet solarjet solarjet ¢¨Á¨¤Ã¨¦§Ã¦¨
¢¨Á¨¤Ã¨¦§Ã¦¨¢¨Á¨¤
Lo¢¨Á¨Á¨¤
>>suborbital_airlines.bulletin{"request":"flight_list","id":"O1114"}
--------------
FLIGHT AUTOLOG
--------------
Solarjet O1114 regist¢¨Á¨¤Ã¨¦§Ã¦¨
Log ends.
>>suborbital_airlines.bulletin{"request":"lost_items"}
----------
LOST ITEMS
----------
12776 [Pet container, beige]
55424 [Household bot, black]
89795 [Blazer, navy blue]
¨¦§Ã¦¨¢¨Á¨¤Ãuitcase, brown]
For operator notes, please provide an item_id.
>>suborbital_airlines.bulletin{"request":"lost_items","item_id":"foo"}
----------
LOST ITEMS
----------
12776 [Pet container, beige]
55424 [Household bot, black]
89795 [Blazer, navy blue]
¨¦§Ã¦¨¢¨Á¨¤Ãuitcase, brown]
For operator notes, please provide an item_id.
>>suborbital_airlines.bulletin{"request":"lost_items","item_id":"12776"}
12776 [Pet container, beige]
standard bunnybat box
abandoned at LHR 12/
dont blame them tbh
>>suborbital_airlines.bulletin{"request":"lost_items","item_id":"55424"}
55424 [Household bot, black]
Robovac-type household cleaning bot. Left at SEATAC. Lighter than you'd think--wait, reclassifying. Packaging only. Box is empty. Looks like forced entry. Forced exit, maybe.
>>suborbital_airlines.bulletin{"request":"lost_items","item_id":"89795"}
89795 [Blazer, navy blue]
Suborbital Airlines staff blazer in navy blue, found in the staff lounge at Aden. Gold lapel badge printed with the name 'Hesse'
Anja, how many lost blazers is this now? Three? Do I need to pass this up the chain?
>>suborbital_airlines.bulletin{"request":"request_refund"}
The Suborbital Airlines refund subsystem has been terminated.
>>suborbital_airlines.bulletin{"request":"operator_login"}
Welcome, human operator. Please provide your user_id
>>suborbital_airlines.bulletin{"request":"operator_login","user_id":"anja"}
User not recognised. Please provide a valid user_id. Remember: your login is derived from your initial and surname.
>>suborbital_airlines.bulletin{"request":"operator_login","user_id":"hackbot"}
User not recognised. Please provide a valid user_id. Remember: your login is derived from your initial and surname.
>>suborbital_airlines.bulletin{"request":"operator_login","user_id":"ahesse"}
User recognised. Please provide your password.
Forgetful employees are reminded that, while it is an eight-letter word, 'password' is not a sufficiently secure password. I'm leaving this note here so that you remember to CHANGE IT. - Admin
>>suborbital_airlines.bulletin{"request":"operator_login","user_id":"ahesse","password":"password"}
Password accepted. Welcome, Anja Hesse
-----------------
OPERATOR INTRANET
-----------------
Please select a page: messages | auth_key
>>suborbital_airlines.bulletin{"request":"operator_login","user_id":"ahesse","password":"password","page":"messages"}
--------
MESSAGES
--------
FROM: Kerne SUBJ: Found your blazer (again)
FROM: SubOrb Party Committee SUBJ: Suborbital getaway this weekend!
FROM: Admin SUBJ: PASSWORD ISN'T A GOOD PASSWORD HOW MANY T
FROM: Kerne SUBJ: Drink?
>>suborbital_airlines.bulletin{"request":"operator_login","user_id":"ahesse","password":"password","page":"auth_key"}
Generating authentication key, please wait.
Generation complete. Your authentication key is:
Tu74519
>>weathernet.status{}
You're connected to WeatherNet, the world's most reliable automated atmospheric data service. This status subsystem is intended for partner diagnostics only. WeatherNet recommends against manual data retrieval wherever possible. Please select an option service_log | latest_data
>>weathernet.status{"option":"service_log"}
This diagnostic service has logged int_err service requests since xxxxxxx
Partner services connected: 0
Data throughput: int_err
AtmoSat ping time: int_err
Ground network status: Partial
WeatherNet: Inoperable
We trust that your WeatherNet experience has been satisfactory. Visit weathernet.public for more information on our services.
>>weathernet.status{"option":"latest_data"}
CAUTION: AtmoSat network is experiencing severe disruption.
Polling reserve data from ground-level atmo stations.
Please wait.
STATION A01 | Jerusalem | Locator: JE¦§§ | Conditions: Clear
STATION N78 | Bangkok | Locator: BAN8884 | Conditions: Very Poor
STATION E21 | Liverpool | Locator: LIV4887 | Conditions: Very Poor
STATION C91 | Cancun | Locator: CAN8253 | Conditions: Deteriorating
STATION U77 | Seoul | Locator: loc_int_missing | Conditions: condition_missing
STATION ¨¦§ | Cairo | Locator: CAI1279 | Conditions: Clear
STATION R43 | Athens | Locator: ATH3432 | Conditions: Deteriorating
STATION O65 | Atlanta | Locator: ATL9932 | Conditions: Clear
STATION Q12 | Mexico City | Locator: MEX3212 | Conditions: condition_missing
STATION B42 | Shanghai | Locator: SH¦§§¨ | Conditions: condition_missing
>>suborbital_airlines.bulletin{"request":"flight_list","id":"V2776","proceed":"y","dest":"foo"}
Destination locator not recognised. Please try again.
>>suborbital_airlines.bulletin{"request":"flight_list","id":"V2776","proceed":"y","dest":"BAN8884"}
Destination locator recognised.
I'm sorry, but that destination is beyond this vessel's operational radius.
Flightpath modification failed.
>>suborbital_airlines.bulletin{"request":"flight_list","id":"V2776","proceed":"y","dest":"LIV4887"}
Destination locator not recognised. Please try again.
>>suborbital_airlines.bulletin{"request":"flight_list","id":"V2776","proceed":"y","dest":"loc_int_missing"}
Destination locator not recognised. Please try again.
>>suborbital_airlines.bulletin{"request":"flight_list","id":"V2776","proceed":"y","dest":"CAI1279"}
Destination locator recognised.
I'm sorry, but that destination is beyond this vessel's operational radius.
Flightpath modification failed.
>>suborbital_airlines.bulletin{"request":"flight_list","id":"V2776","proceed":"y","dest":"ATH3432"}
Destination locator recognised.
I'm sorry, but that destination is beyond this vessel's operational radius.
Flightpath modification failed.
>>suborbital_airlines.bulletin{"request":"flight_list","id":"V2776","proceed":"y","dest":"MEX3212"}
Destination locator recognised.
I'm sorry, but that destination is beyond this vessel's operational radius.
Flightpath modification failed.
>>suborbital_airlines.bulletin{"request":"flight_list","id":"V2776","proceed":"y","dest":"CAN8253"}
Destination locator recognised.
wait hang on
Flight path accepted. Thank you, operator.
not sure about this
Operator auth key required to approve flightpath alteration.
try a different one i think
>>suborbital_airlines.bulletin{"request":"flight_list","id":"V2776","proceed":"y","dest":"CAN8253","auth":"Tu74519"}
Flight path alteration logged and approved.
:/
Blackbox service no longer required. Log will now cease.
weather is... not what i expected
Thank you for your assistance, operator.
so what else is new, i guess
>>suborbital_airlines.bulletin{"request":"flight_list","id":"V2776","proceed":"y","dest":"ATL9932"}
Destination locator recognised.
oh thank god
New flight path accepted. Thank you, operator.
no seriously
Operator auth key required to approve flightpath alteration.
>>suborbital_airlines.bulletin{"request":"flight_list","id":"V2776","proceed":"y","dest":"ATL9932","auth":"Tu74519"}
Flight path alteration logged and approved.
:)
Blackbox service no longer required. Log will now cease.
cya
Thank you for your assistance, operator. Relay your friends and relatives to suborbital_airlines.public.
weather looks nice up ahead


List of Previous Ballots
| Serial No. | BallotID | Election Name | Date | Candidate elected |
|---|---|---|---|---|
| 1 | SA001 | Student Association Election - 2007 | 15 Sep, 2007 | Emily Sanders |
| 2 | SA002 | Student Association Election - 2009 | 2 Sep, 2009 | Sarah Pollack |
| 3 | SA003 | Student Association Election - 2011 | 23 Aug, 2011 | Gary Dillon |
| 4 | SA004 | Student Association Election - 2013 | 5 Aug, 2013 | Gary Dillon |
| 5 | SA005 | Student Association Election - 2015 | 2 Sep, 2015 | Angela Paulin |


See: Description
| Interface | Description |
|---|---|
| ControlListener | |
| EnabledStateChangeListener |
Interface used to listen to enable/disable states.
|
| EventHandler | |
| FocusListener |
Interface used to listen to Focus events.
|
| FontChangeHandler | |
| GridListener |
Interface used to listen to Grid events.
|
| HighlightListener |
Interface used to listen to Highlight events.
|
| KeyListener |
Interface used to listen to Key events.
|
| ListContainerListener |
Interface used to listen to ListContainer events.
|
| MouseListener |
Interface used to listen to mouse move events.
|
| MultiTouchListener |
Interface used to listen to MultiTouch events.
|
| PenListener |
Interface used to listen to Pen events.
|
| PressListener |
Interface used to listen to Press events.
|
| PushNotificationListener |
Interface used to listen to Push notification events.
|
| TimerListener |
Interface used to listen to Timer events.
|
| UpdateListener |
Interface used to listen for Update events.
|
| ValueChangeHandler<T> | |
| WindowListener |
Interface used to listen to Window events.
|
| Class | Description |
|---|---|
| ControlEvent |
ControlEvent is an event posted by a control.
|
| DragEvent |
An event that represents a pen drag.
|
| EnabledStateChangeEvent | |
| Event<H extends EventHandler> |
Event is the base class for all events.
|
| Event.Type<H> | |
| FontChangeEvent | |
| GridEvent |
An event generated when the user clicks on a grid or checks it.
|
| KeyEvent |
KeyEvent is a key press event.
|
| ListContainerEvent |
An event generated when the user clicks on ListContainer.Item.
|
| Listener |
A class that represents an event Listener.
|
| MouseEvent |
MouseEvent is a mouse move, in a control or out a control events.
|
| MultiTouchEvent |
MultiTouchEvent works on devices that support more than one finger at a time.
|
| PenEvent |
PenEvent is a pen down, up, move or drag event.
|
| PushNotificationEvent | Deprecated |
| TimerEvent |
TimerEvent represents a control's timer.
|
| ValueChangeEvent<T> |


3. Exercise 2: Scanning a Private Network¶
In Exercise 1 we scanned a publicly-accessible server, and discovered it was running an FTP service. In this exercise we’re going to abuse that FTP server to reconnoiter the private network it is connected to. Then we’ll see if we can do anything useful to an attacker.
nmap
is software built specifically for Network Scanning. Here we’re repurposing legitimate services to
scan networks we otherwise could not access.
For the purposes of this Exercise we have revived a security issue from the mid-90s, where people started to use a design quirk of the FTP protocol in this manner. Modern exploits can deliver similar capabilities but tend to be much more complex, which would complicate this simple example.
3.1. Design of The FTP Protocol¶
FTP stands for File Transfer Protocol. It dates from 1971 but is still in widespread use. It is a standard
for sharing files over the Internet - very much an old version of Dropbox or Google Drive. A typical session consists of an FTP client connecting to an FTP server on port 21. It then sends a login, e.g.
USER student
and PASS golyeeHug6
.
Provided the server accepts these details, the client can then send commands. Such as deleting a file with
DELE file.txt
. If the deletion was successful, the server responds with a 250 DELE command successful
message.
3.1.1. Data Connections¶
The DELE
command results in a simple success or failure message. But if you’re downloading or uploading
file contents, FTP sends that data over a separate connection.
- The Client sends
PORT A,B,C,D,P1,P2
to indicate the IP Address A.B.C.D and Port P1P2 that the server could open a data connection to. - The Client then sends a command which requires a data connection. Such as
LIST
for a list of files in the current directory. OrRETR file2.txt
to get the contents of the filefile2.txt
. OrSTOR file3.txt
to upload a file. - The Server connects to the address specified by the previous
PORT
command, sends the data, and closes the connection. For file uploads, the Server opens the connection and the client sends data and closes it.
3.1.2. FTP Bounce¶
There was no requirement for that PORT
command to go to the Client’s IP Address. You could send file
contents anywhere the FTP Server could access. If the FTP server was connected to a private network, such
as a home or corporate network, you could send data to hosts on that network.
 If you include a PORT
command pointing to you, you can even have that FTP
Server send you a list of files or their contents.
This technique is named FTP Bounce, as you’re bouncing requests off the FTP Server.
- Enumerate which services are running.
- Interact with internal, private FTP servers.
- Send commands to some shells and databases, but generally not read the output.
For the following tasks, you will find this useful: FTP Protocol Reference
3.2. Task 1: Experiment with FTP¶
In ftp/examples
you’ll find a number of Python scripts. These are examples of how to do various
operations, as explained in FTP Protocol Reference
Try saving some text as a file:
examples/stor.py
Try listing files in the current directory:
python3 examples/retr.py
Try retrieving a file:
python3 examples/retr.py
Try deleting a file:
python3 examples/dele.py
Try sending data to a another service:
python3 examples/remote_port.py
You’ll notice these examples all print the commands moving back and forth. This is controlled by a
debug=True
parameter you can see if you open up the files. Play about and get familiar with how things
work. FTP Protocol Reference will help.
3.3. Task 2: Discover hosts on the internal network¶
This is the provided examples/remote_port.py
:
import sys, os
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + "/..")
from cp_ftp import FTP
ftp = FTP("<IP_ADDRESS>", debug=True)
ftp.send_login_commands("student", "golyeeHug6")
target_address = ("<IP_ADDRESS>", 21)
ftp.send_port_command(target_address)
response = ftp.recv_response()
if response.code != 200:
print(response)
sys.exit(1)
ftp.send_command("LIST")
response = ftp.recv_response()
if response.code != 150:
print(response)
sys.exit(1)
# No Data is received because it was sent somewhere besides this program!
response = ftp.recv_response()
if response.code != 226:
print(response)
sys.exit(1)
ftp.close()
We’d like to quickly discover all hosts running on the 192.168.0.X
subnet. We could try every port on
every host <IP_ADDRESS>
through <IP_ADDRESS>
, but that’s 255 * 65,536 = 16,711,680
attempts.
To keep things quick, just check port 22
on each of those IP Addresses. To make things quicker, only scan
from <IP_ADDRESS>
to <IP_ADDRESS>
.
Open ftp/task2.py in an editor to get started. There are instructions inside. You can run that script
with python3 ftp/task2.py
. FTP Protocol Reference may be useful.
Hint: You can see the difference between successful/unsuccessful under FTP Bounce.
3.4. Task 3: Port scan discovered hosts¶
Now you want to find out which services are running on the hosts we discovered. You can do this by trying
each port from 1
to 65,535
. To keep things quick, only try privileged ports (those from 1
to
1023
).
You should start to sense how you discover what is running, and get to look for options for attack.
Open ftp/task3.py in an editor to get started. There are instructions inside. You can run that script
with python3 ftp/task3.py
. FTP Protocol Reference may be useful.
You may also be save the output from each service onto a file on the file on the FTP Server, using RETR
.
3.5. Extension Task: Exfiltrate data from a private FTP server¶
For our next task we want to retrieve secret files from this network’s private FTP server. You may have
noticed in Task 3 that there’s an FTP server running on port 21 of <IP_ADDRESS>
. If you try
nc <IP_ADDRESS> 21
you’ll find you can’t connect from your own computer. But you’ve found that
<IP_ADDRESS>
can.
Here’s the trick: you can send the contents of a file to the FTP server on port 21 of <IP_ADDRESS>
and
it’ll interpret each line of the contents as a command. So you can tell it to do things. Like send you their
secret weapon blueprints.
You could put a PORT
command corresponding to a new_data_address
into that file, then put LIST
.
Then the <IP_ADDRESS>
FTP server will send your computer a list of files you can get with ftp.recv_data()
. This is quite tricky to do with limited knowledge. As such I’ve written these
attack commands for you. All you need to do is get it sent to port 21 on <IP_ADDRESS>
.
Open ftp/task4.py in an editor to get started. There are instructions inside. You can run that script
with python3 ftp/task4.py
. FTP Protocol Reference may be useful.
Continue: Conclusion


Table of Contents
- Biography
- 1990's
- 2000's
- 2010's
- Game Servers
- My second linux experience
- Technology world evolves
- 360 NoscopeZ
- Religion
- Theatre
- School's out
- My third & fourth linux experience. Also my first BSD experience
- Don't buy GPU's first
- Quake Live
- Super Smash Brothers Melee
- My first Rooted smartphone attempt
- Technical difficulties
- My fifth Linux experience & second BSD experience #2
- Warsow
- Programming inspiration
- Darker days
- No to smartphones
- OpenBSD in the picture
- Be careful who you back on Indiegogo, Kickstarter ..etc
- Raspberry Pi 3b
- You're in the army now (remember the song?)
- After military service
- Small media gig turned into a real mens job
- 2020's
Biography
I came into this world in the year of 1998. Same as the malbolge programming language. Our family always had a computer around, as far back as I can remember. That computer played a big role in shaping my path as a programmer today. I think many programmers can relate to having a similar childhood experience.
I'll be honest, most of what I'll be sharing is about nostalgia and talking a lot about video games. So, it might not be everyone's cup of tea. But hey, feel free to join me on this journey if you're up for it!
1990's
Ah, those years are a bit hazy for me. I was still in diapers back then. It was around the time when the first Matrix movie hit the screens, Half-Life made its debut, and game developers were starting to dive into the world of 3D environments.
2000's
Kindergarten
Figure 1: During my early years, I experienced the joy of my first video game: Midtown Madness 2. It was a thrill collecting CD-ROMs from cereal boxes with fellow kids. Soon after, we got our hands on NHL 2003 for PC, and I became obsessed with anything related to hockey. It's worth noting that NHL 2003 was released in late 2002, despite its name.
Console Adventures
My passion for gaming extended to consoles when I played PlayStation 2 at my neighbor's place. I used my 7th birthday money to purchase a PS2 Slim and Lego Star Wars. I didn't have any extra controllers or a memory card, but that didn't dampen my enthusiasm. I also discovered the captivating world of GTA Vice City and the unforgettable Sly Cooper franchise. Whether I played them in the intended order or not, these innocent platforming and racing games gradually transitioned into action-packed adventures around the mid-2000s. Games like James Bond Night Fire and Star Wars Battlefront II became staples of my gaming experience.
Although I initially believed I had outgrown consoles, the allure of Wii Sports Bowling, experienced at a friend's place, convinced me otherwise. I saw motion controls as the next big thing. I spent hours playing Wii Sports, Guitar Hero III, and Super Smash Bros Brawl. Now, let's settle the debate: PlayStation 2, released in 2000, remains the most influential console ever. In fact, my own PlayStation 2 and Wii consoles are still in working condition, allowing me to relive the memories of a younger version of myself singing nonsensical songs on SingStar, thanks to memory cards and homebrew magic
Of course, rest assured that I spent plenty of time outdoors too!
Internet
This period marked the arrival of internet in our household, and I found myself captivated by Counter-Strike. Initially, I played against bots, but before long, I ventured into the world of online play. Counter-Strike was a phenomenon among kids, and we all found our way to it through a site called Kivitie (which, by the way, has long disappeared). Yes, we were a bunch of young outlaws, but I think it's time to come clean about it.
As the internet became a significant part of my life, I discovered Habbo Hotel, MSN Messenger, and the enchanting realm of YouTube. I spent countless hours watching Lego projects, enjoying Machinima creations (anyone remember Leet World?), and following popular channels like RWJ and Smosh. It was also during this time that YouTube poop and its Finnish counterpart, Sinätuubapaska, emerged. While I didn't create my own flash games, I delved into Windows Movie Maker, Sony Vegas 7, and Sony Vegas Pro 8, channeling my inspiration from Counter-Strike and James Bond into stop motion Lego movies.
Ice Skating and More
In my early years, I quickly learned to skate on ice, and at the age of 7, my mother enrolled me in a hockey team. Hockey has always been my favorite sport, and for 5 years, I found my place as a goaltender after our team faced a shortage. Eventually, I decided to explore another passion and spent the next 5 years learning to play the guitar. However, my interest in skateboarding, inspired by games like Tony Hawk and Jet Set Radio Future, didn't last long. Nonetheless, during the summer months, baseball became my sport of choice. Surprisingly, our small town had a better baseball team than a hockey team!
My First Encounter with Linux
Somewhere around 3rd or 4th grade, during our weekly IT classes, I encountered computers dual-booting Windows with Ubuntu 8.04. While we couldn't fully grasp its potential as young children, I was particularly drawn to the Gnome 2 interface and its vibrant orange color scheme.
My First "Gaming" PC
In 2009, I was ecstatic to acquire my first "gaming" computer for €300. It consisted of an Athlon X2 250 with a stock cooler, a single stick of DDR3 2GB RAM, an HD 4570 (or something similar, though it was the first component to fail), a 1TB Western Digital Green HDD, and an ASRock M3A785GM-LE motherboard (arguably the ugliest ASRock motherboard ever made). I absolutely loved it!
Our family had a total of two computers to share: my sister's laptop and my trusty desktop PC. There might have been an extra one tucked away in the closet, but even back then, it was considered outdated. However, I still keep it intact, and with a decent graphics card, it should run just fine. Although these computers lacked OpenGL support, they still had their uses, even if they were quite power-hungry.
During this time, I obtained my first Steam account and immersed myself in Counter-Strike: Source. I also enjoyed playing Garry's Mod 9 because it was free. About a year later, I purchased a used account with Left 4 Dead 2 and Team Fortress 2 for a mere €10. CSS still holds the record for the most hours I've spent playing a game, ranging from 2000 to 3000 hours, with a significant portion devoted to "sauna" servers. Remarkably, as of 2023, a couple of servers are still running. It's a delightful experience to play with friends and engage in voice chats with strangers.
2010's
Game Servers
In 2010, when I was a 12-year-old kid playing Counter-Strike, I had my first exposure to coding through AMX Mod X scripts. AMX Mod X is for goldsrc games, while Sourcemod is for source games. Although I didn't understand much at the time, it was cool to be able to open files and see what was inside. Game hosting also taught me basic networking skills like gateways and ports, which turned out to be valuable. I was also intrigued by Ruby during that time, although it didn't lead to anything significant until 2022. I probably made some super basic webpages back then, as that's where many people start their coding journey, right?
My second linux experience
I had a vague interest in hacking culture during this time. I remember watching a presentation called "DEFCON 18: Pwned By The Owner: What Happens When You Steal a Hacker's Computer." It was one of the most entertaining talks I've ever seen. After that, I tried out Backtrack 4 livedvd, which is now known as Kali. I was just a kid and had no idea how to navigate the command line.
Technology world evolves
The early 2010s were a wild time. Smartphones and social media grew rapidly, sadly killing Flipnote Hatena for DSi. Let's plays and livestreaming became popular, many companies shifted to service models, and there were global surveillance disclosures. On a positive note, Finland won gold at IIHF 2011!
360 NoscopeZ
For a short period, I played Call of Duty, Halo, and other Xbox 360 titles with friends. Quickscoping and Zombies became a big part of my day. It was a routine to chat with strangers in Xbox 360 lobbies. I got a minecraft account too after trying it in my friends house. I had a lot of fun with it but i sold it soon after.
Religion
There was this youth center in the middle of a dead town that I'll always remember fondly. It had a cozy and warm atmosphere where people cried and laughed together. I never felt a strong connection to God or any religion, but I loved the sense of community there. It was the most fun time I've ever had, like being part of a tribe. Personally, I believe partying with drugs and alcohol doesn't come close to that experience. However, as we all got older, we moved to different places. Good luck to everyone, wherever they are now!
Theatre
One of my friends asked me to participate in a summer theatre production. I didn't have a major role, just one or two lines, but I went with it.  I even had a small relationship during that time. We celebrated my 18th birthday with a sauna and tequila.
School's out
Fast forward to 2014, I finished comprehensive school and studied Graphic Design in vocational school. Although it wasn't my intended career path, I wanted to learn the skill regardless of my future occupation. Unfortunately, my Photoshop skills didn't improve much during that time. I didn't learn to draw art, but I did spend time thinking about typography. I was more inclined towards digital design and didn't care much about print. However, the school focused solely on physical print projects like calendars, roll-ups, signs, shirts, and stickers, without considering web design. It was a challenging environment where motivation was lacking, but my first year was the most enjoyable due to the student community at the time.
Lesson learned: Using Windows XP for real work is a bad idea. I had some extra computer parts and decided to experiment. I love Windows XP because it reminds me of my childhood, but when I used it for magazine work with Adobe InDesign, it crashed and blue-screened a lot, especially under pressure.
Overall, those were some interesting times, exploring different aspects of design, playing games, and learning from both successes and failures.
My third & fourth linux experience. Also my first BSD experience
We had parties, and I managed to get a couple of old computers from people without spending any money. I did some small installation projects like creating a Tiny Linux laptop and a Pfsense router when I had networking issues, but i clearly lacked knowledge to get Pfsense working when i was 16.
I had a few experiences with Linux during that time. Steam was announced for Linux, and my stepbrother had a Linux Mint machine in his fathers place, but we didn't know how to use it properly. I found the whole "app store" way of installing applications weird, and I'm not a fan of the look of Linux Mint either. Maybe it's just my weird mentality.
Don't buy GPU's first
Lesson learned: Investing in GPUs is not a great idea. I bought a brand new GTX 770 without considering the other components I needed. I could only afford AMD's FX line of cpus. They're actually good bang for buck but i felt like this is too soon to put serious money in a computer. So i put the new computer build on hold for a long time. My gpu ended up collecting dust for years.
Quake Live
In 2014, I discovered Quake Live, an arena first-person shooter. It was a new experience for me, and I spent countless hours playing duel matches. Quake pros are hardcore, and the adrenaline rush was amazing. It's a challenging game that requires strategy, timing, and precise aiming. While it may be difficult for newcomers, with dedication, anyone can get into it. Nowadays, I think team-based game modes are more enjoyable.
Super Smash Brothers Melee
Super Smash Bros: Melee became a big part of my gaming life in 2015.  And we even softmodded our Wii to play it. I started studying the game and ended up playing as Peach.
My first Rooted smartphone attempt
I had an HTC One M8, and I tried to root it, but it was a real challenge. I managed to unlock the bootloader, but I couldn't install a custom ROM on it. It put me off of trying custom roms for some time.
Technical difficulties
Around that time, my gaming computer from 2009 started acting up. I rigged a 6-pin adapter for a better GPU without a soldering iron, and then the onboard Ethernet plug stopped working. I installed an external networking card, which worked fine for the next few years. With my aging hardware, I started looking into Linux more.
My fifth Linux experience & second BSD experience #2
I was a fan of the Linux content produced by Teksyndicate in 2014-2015, so I decided it was time to give Linux a real shot. My first day-to-day Linux experience was with Linux Lite 2.X. Although Steam was supported on Ubuntu, I wanted something faster. So, I looked for any Ubuntu-based distro on distrowatch.com.
Then Debian 8 was released, and since it was Mr. Gabe Newell's favorite distro, I figured I couldn't go wrong with it. I felt pretty comfortable with the XFCE desktop, but I couldn't resist trying out all the different desktop environments.
In 2015, I came across a video that introduced me to i3 window manager, and it was a game-changer. Thanks to Eric S. Raymond, I never went back to dragging windows with a mouse, except when using Mac or Windows systems. Soon after, I started installing Arch Linux by following a video tutorial.
Since I was playing sysadmin at the time, and had a lot of time: i became interested in every single distributions like Alpine, Fedora, FreeBSD, Gentoo, and Slackware. I tried them all, even more obscure ones like CRUX. Then distro-hopping became a real issue. Then i lost the count of how many operating systems i've tried out.
Warsow
I played my first game of Warsow with my CSS friend back in the early 2010's, we didn't think much of it. But after Quake Live was no longer available for Linux, I played Warsow. I loved its cell-shaded style and gameplay so much that it took over my love for Quake. I spent countless hours playing duels against friends and strangers. The speed in Warsow was exhilarating. I gradually started playing more team-based games like Bomb, which had a Counter-Strike format but was more fun! During that time, IRC was still popular, but eventually, Discord took its place.
Programming inspiration
I watched a lot of Eli the Computer Guy on YouTube, and he strongly influenced me to consider programming professionally. The idea of typing in front of computer all day and getting paid for it sounded good to me. I think I wrote my first programs in Lua around 2015 when I was 17 with FreeBSD and SCITE. They were just your typical "Hello World" and dice-throwing games. I was inspired to learn Lua because it was considered an easy language, and Grim Fandango heavily used it. As I became more involved in programming, i grew increasingly unmotivated to work with print.
Lesson learned: If you want to drop-out, the sooner you drop-out the better. I was 1,5 years in this point, which is basically halfway there. I thought that since i've been here for so long, i might as well finish what i've started.
Darker days
During 2016, I went through a rough patch due to a lack of progress in my studies. It made me feel like I was going nowhere. To cope with it, I started to go out and take pictures more often. I was really isolated during that time, but i grew as a person as well.
Infinite Waters' wisdom helped me a lot during that period. Quotes like "Happiness is an inside job" "The universe reveals its secrets to those who dare to follow their heart" and "The best relationship you can have is with yourself" resonated with me and i lived more care free. Since then his videos have changed, but i am forever grateful. Thank you Ralph.
No to smartphones
There was a period when my smartphone stopped working; it wouldn't boot into anything and was stuck in recovery mode. That's when I had a thought: "I spend so much time on computers in school and at home. I don't need a smartphone holding me back!" So, I decided to go without any cellphone for three months. I still had an MP3 player and a digital camera to use at the beach. It felt liberating not to carry anything valuable while I was out, even if I lived in the middle of nowhere. If you value privacy, it's a good decision to make. However, it didn't last forever. After three months, I got a dumb phone, which I used for a year until I received a certain PDA in the mail.
OpenBSD in the picture
After 2016, I hardly logged into Steam. I became intrigued by OpenBSD because they have a strict policy of either doing things well or not doing them at all. I watched talks by Michael W. Lucas, which convinced me to give it a try. I bought a used Kindle that was filled with technical literature. Around that time, Rust was gaining popularity, so I became interested in learning it. I thought it would revolutionize everything, but I soon realized it was much harder than I expected. I also tried an early version of Redox OS, which is a cool project. However, I was overly optimistic about my programming skills and didn't do enough small exercises as I should have. I wanted to create big things right away, but I realized i needed to learn C first before going back into Rust.
During this period, I created a GitHub account and experimented with GitHub Pages. In the autumn of 2017, I got back into the print grind.
Then i bought over 20 laptops from a seller on tori.fi for 50€. Surprisingly, half of them worked perfectly fine once I found power adapters for them. Most of these laptops ran OpenBSD, which was a great choice, especially for older systems. I learned a lot during this time and tried out every window manager I could get my hands on. I particularly liked the manual tiling approach of ratpoison, with xmonad coming in second. Nowadays i think that XMonad is #1.
Be careful who you back on Indiegogo, Kickstarter ..etc
I was intrigued by the Gemini PDA, one of those Linux-based mobile devices that weren't Android. At the time, I thought I wouldn't need any other Linux PC if I had that device. It had decent software support, with choices like Android 8, Jolla, Debian, and Kali available. However, in retrospect, touchscreens are cheaper and easier to use than a tiny hardware keyboard. The Gemini PDA was well-designed, but the manufacturing quality was subpar. The plastic hinges broke apart after only 2 years of use. I also purchased the Ethernet and HDMI adapters, but they were cheaply made as well. Planet computers company is still going, but the first Gemini PDA died out relatively quickly. Goes to show that notebooks are great, but they're never going to make a comeback.
Raspberry Pi 3b
So i became interested in the ARM Linux space, so I bought myself a Raspberry Pi 3. It's a lot of fun, and my favorite thing about it is that it's fanless and low-power. Once i got the Pi, I didn't use my laptops as much, even if it was significantly slower. I started learning the terminal and experimenting with it.
You're in the army now (remember the song?)
Finally finished school by the skin of my teeth, and it was time to serve in the army. I made plenty of mistakes and never felt like i was good enough. Things changed when we switched positions, and I found myself fixing aggregates. I could go on about that experience, but I can't spill the beans.
After military service
The army felt like the longest six months of my life, but I was ready for the next step: learning C. I moved in with my parent who had relocated near to Lapland, and I started studying by myself. I got trough a C book, and wrote one and a half notebooks worth of handwritten notes. Unfortunately i didn't do much with this information, i should have put it in practise earlier.
Small media gig turned into a real mens job
I was doing on the job learning for a education workshop company, and the best part was getting to play around with an old 3D printer. However, printing posters quickly drained my energy, and I didn't get along with some people there. So, I asked my stepfather for a building job, and his employers complied.
2020's
Building loghouses
I ended up working for a house building company for a couple of years, and it's been my favorite job so far, despite constantly arguing with an unnamed coworker (it's becoming a common theme). In the midst of the pandemic, I had a blast watching Twitch, building stuff, and, of course, swimming. I was drinking quite a lot back then, but I genuinely enjoyed what I was doing. Maybe this is my true
Espresso
Ever since I tried espresso from a Lidl moka pot, I've become quite the coffee enthusiast. During my time working on houses, a morning cup of espresso was all I needed to keep me going throughout the day. These days, in 2023, I prefer something a bit milder when it comes to my coffee choices.
Chess
My interest in chess sparked after watching PogChamps 2. It led me down a rabbit hole of watching videos by GM Hikaru, GothamChess, Anna Rudolf, and Eric Rosen. Chess quickly became one of my all-time favorite games. In 2021, I spent countless hours playing chess every day.
To deepen my understanding of the game, I delved into Agadmator's coverage of historic chess games, GM Finegold's fascinating lectures, and, most importantly, GM Naroditsky's speedrun videos. There are so many talented chess content creators out there, not to mention the countless books on chess.
While I may not play as many games these days, I'm always up for a challenge! Chess will forever hold a special place in my heart.
OnePlus 5T
I got my sister's old phone and installed Lineage OS on it. And it completely changed my perspective on these gizmos. They're now my favorite way of computing! I was blown away by the speed difference between the Raspberry Pi and a modern smartphone. I became an ARM fanboy. We should look into making app developement more accessible, since there's plenty of kids that down't even own a computer anymore. Imagine if you could develop the application natively on the device? there is some effort made, but it's clearly not funded.
Comeback to hockey
When i was a teen, it became more and more unviable to keep playing hockey, because of long commutes, bad results and expenses. I stopped playing hockey around when i was 13 and i came back to playing hockey in 21. I love playing in the beer league. I'm still a goaltender yes.
Crypto
You all probably know that Bitcoin was skyrocketing in the early 2020s, so starting january 2021 i decided to start a Dollar Cost Averaging (DCA) plan. Well, after two years, my portfolio ended up being down 40%. Yeah, I was pretty naive. Nobody was safe from the crash in 2022. But hey, I did learn a lot about finance, even if I lost big. I'm still holding on to my crypto, though. I belive the big cryptocurrencies will have their place in the future.
Alcohol
Alcohol has been a part of my life, and I'll admit there have been numerous occasions where I've ended up completely blackout drunk. It's not something I'm proud of, and I've learned from those experiences. As a result, I decided to cut out hard liquors from my drinking habits.
By avoiding hard liquors, I've significantly reduced the chances of getting excessively wasted and making foolish mistakes like losing my belongings or engaging in risky activities. I believe that consuming hard liquors, with their higher ethanol content, takes a toll on our livers and potentially impacts our lifespan. Opting for milder drinks allows the liver more time to process the alcohol, preventing it from being overwhelmed.
Drinking a whole bottle of whiskey, for example, is way too much for me. It always leaves me with a pounding headache afterward. These days, I prefer to sip on beer and wine instead. Cutting out hard liquors has also motivated me to exercise more, which has been beneficial for my overall well-being.
While I've made progress in moderating my alcohol intake, I recognize that my current challenge lies in managing my carb intake. But all in all, I'm content with where I am today in terms of my drinking habits and relationship with food.
First office job
I wasn't really keen on leaving my building job, but there were so many arguments with this one coworker, and the office gig offered better pay, so I went for it. 2022 was a tough year for construction businesses, and that place went down with it.
Starting as a helpdesk clerk wasn't too bad at first, but after my grandmother passed away, and i couldn't deal with some of the people at the new company. I just couldn't meet their expectations anymore, and they laid me off. It made me question if I'm just a terrible person.
I realized I'm not great at verbal communication, but I did enjoy spending time creating (horrible) WordPress sites. Seriously, after version 5.9, making a WordPress site is a breeze. If you can handle editing a full site using a theme, you can get something done. But beware of relying too much on third-party plugins for long-term maintenance. It's a disaster waiting to happen.
So, I started my own company
I dabbled in doing WordPress sites for some quick cash, but the more I thought about the web business, the more I realized that the demand wasn't really there. Plus, the whole ecosystem is a mess.  I figured I'd be better off trying something else. After a few months i cancelled my dedicated server for now. People aren't looking for more services after the crash.  I can't justify charging €20 a month to a hundred people just to host their webpage. The field is very competitive.
Right now, I'm really excited about exploring new things. I've developed a strong liking for Crystal, Clojure, Go, Kotlin, Python, Raku, and Ruby languages. They all have their unique charm, and I can't wait to dive deeper into each of them. It's cool to have such a diverse range of languages to play around with and see what kind of projects I can create. Who knows!


--- layout: post-index ---
ABOUT ME
Classes
Equity Report
ARCHIVE(Articles Sorted by Year)
TAGS(Articles Sorted by Content)
ML&DM(machine learning and data mining projects)
Register/log in


ldap_bind
(PHP 4, PHP 5, PHP 7)
ldap_bind — 绑定 LDAP 目录
说明
bool ldap_bind ( resource $link_identifier [, string $bind_rdn = NULL [, string
$bind_password = NULL ]] )
使用指定的 RDN 和密码绑定到 LDAP 目录。
参数
link_identifier
通过 ldap_connect() 连接之后返回的 LDAP 连接标识。
bind_rdn
bind_password
如果没有指定 bind_rdn 和 bind_password ，将会以匿名身份绑定。
返回值
成功时返回 TRUE，或者在失败时返回 FALSE。
范例
Example #1 使用 LDAP Bind
Example #2 Using LDAP Bind Anonymously
参见
• ldap_unbind() - Unbind from LDAP directory
User Contributed Notes 42 notes
===============================================================================
Interesting point,
if you can't bind to active directory with the error "49: Invalid Credentials",
you can get the extended error output from the ldap_get_option function, using
the option: LDAP_OPT_DIAGNOSTIC_MESSAGE. Unfortunately php hasn't defined this
by default, but it's value is 0x0032.
This is useful if a user must change their password at first login (Data: 773),
or if their account has expired on the network (Data: 532).
Or something to that effect..
It took me a while to work this one out, so i figured i'd share my results..
===============================================================================
I couldn't get ldap_bind to work on an ldaps connection until I followed some
instructions about creating an ldap.conf file. I don't see these instructions
anywhere on the php site. Maybe they're on the OpenLDAP site, but I thought it
would be useful to have here as well. Credit goes to a dude known as 'LRM',
and I found my solution here: http://lists.horde.org/archives/sork/
Week-of-Mon-20040503/001578.html
My setup is XAMPP on Win XP.
###### ApacheFriends XAMPP (basic package) version 1.6.3a ######
+ Apache 2.2.4
+ MySQL 5.0.45
+ PHP 5.2.3 + PHP 4.4.7 + PEAR
+ PHP-Switch win32 1.0 (please use the "php-switch.bat")
+ XAMPP Control Version 2.5 from www.nat32.com
+ XAMPP Security 1.0
+ SQLite 2.8.15
+ OpenSSL 0.9.8e
+ phpMyAdmin 2.10.3
+ ADOdb 4.95
+ Mercury Mail Transport System v4.01b
+ FileZilla FTP Server 0.9.23
+ Webalizer 2.01-10
+ Zend Optimizer 3.3.0
+ eAccelerator <IP_ADDRESS> for PHP 5.2.3 (comment out in the php.ini)
1. create C:\OpenLDAP\sysconf\ldap.conf (Yes, it MUST be this path because it's
hard-coded in the dll)
2. put this line at the top:
TLS_REQCERT never
3. Save, stop/start apache.
The reason is, I think, because it doesn't understand the certificate, so this
directive tells it to not bother checking it. I guess that could be unsafe in
some cases, but in my case I'm confident with the server I'm connecting to.
My connection code was as follows (nothing new here, I don't think):
Good luck! LDAPS can be a real bitch.
===============================================================================
A number of examples and implementations of authentication schemes which use
LDAP simple binds to authenticate users fail to properly sanitize
user-submitted data. This can allow for an anonymous user to authenticate to a
web-based application as an existing user. Provided below is a brief
description and example of how this vulnerability can arise. For more detailed
information please visit the links at the bottom of this posting.
The bind operation of LDAP, as described in RFC 4513, provides a method which
allows for authentication of users. For the Simple Authentication Method a user
may use the anonymous authentication mechanism, the unauthenticated
authentication mechanism, or the name/password authentication mechanism. The
unauthenticated authentication mechanism is used when a client who desires to
establish an anonymous authorization state passes a non-zero length
distinguished name and a zero length password. Most LDAP servers either can be
configured to allow this mechanism or allow it by default. Web-based
applications which perform the simple bind operation with the client's
credentials are at risk when an anonymous authorization state is established.
This can occur when the web-based application passes a distinguished name and a
zero length password to the LDAP server.
This is commonly encountered when no password is provided from the client to
the web-based application. This situation is described in some of the postings
found below. For this situation, the recommendations found in other postings is
sufficient to prevent authentication bypass.
However, no prior postings at php.net describe a situation in which a client
may pass a distinguished username and a password of non-zero length to the
web-based application which results in an anonymous authorization state. Below
is an example of this situation.
$dn="testuser";
$pass="\x00\x41";
if (empty($dn) or empty($pass)) { exit(); } //check for empty strings
//if (preg_match('/[^a-zA-Z]/',$dn) or preg_match('/[^a-zA-Z0-9\x20!@#$%^&*()]/
',$pass)) { exit(); } //check for expected values (whitelisting)
//if (preg_match('/\x00/',$dn) or preg_match('/\x00/',$pass)) { exit(); } //
check for null byte (blacklisting)
$ldapconn=ldap_connect("<IP_ADDRESS>") or die("Could not connect to LDAP
server.");
if ($ldapconn) {
ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
$ldapbind=ldap_bind($ldapconn, $dn, $pass);
if ($ldapbind) {
echo("success");
} else {
echo("fail");
}
}
References:
http://security.okstate.edu
===============================================================================
Note that you have to specify the protocol version prior to making a call to
ldap_bind, when the server is expecting LDAP protocol version 3. If you do
not, you will receive a warning and fail to bind, such as:
ldap_bind(): Unable to bind to server: Protocol error
In order to avoid this, make this call:
Where $ds is the result returned by ldap_connect(...);
===============================================================================
GnuTLS and SChannel (Microsoft) implementations are not (yet) compatible for
TLS 1.2 negotiation during LDAPS binding (when binding with Microsoft Windows
2012R2 server).
The trick is to disable TLS1.2 before using LDAP functions:
putenv(‘LDAPTLS_CIPHER_SUITE=NORMAL:!VERS-TLS1.2’);
===============================================================================
Due to a bug in PHP 5.3 you may have to place the ldap.conf in the root of all
your drives (I had to place it on D:).
See http://bugs.php.net/bug.php?id=48866
===============================================================================
When using LDAP with SSL and a LDAP server which uses a self-signed SSL
certificate normally no connection will be established. Therefor you have to
allow such connections explicitly.
With Linux (e.g. Debian, Ubuntu) you have to add "TLS_REQCERT never" to your /
etc/ldap/ldap.conf. On other distributions this config file may be located
somewhere else.
===============================================================================
After a lot of trail and error i've found the way to authenticate to apple's
Opendirectory (snow leopard server) and thought it maybe useful to share.
===============================================================================
Hey
I was trying this all day and final noticed that when you use bind and
authenticate. The user name needs to be as follows for it to work. I am using
PHP V 4.03 so this might be different now but here is what I used and the auth
worked.
===============================================================================
I had a problem doing a ldap_bind over SSL against Active Directory. The server
kept telling me: 'Unable to bind to server:'. To solve this (OS: CentOS 6) make
sure that /etc/openldap/ldap.conf has this line:
TLS_REQCERT allow
===============================================================================
If you're using SSL (e.g. ldaps) and ldap_bind is throwing 'Unable to bind to
server:' errors, check that the hostname used in the ldap_connect matches the
'CN' in the SSL certificate on the LDAP server. For example:
ldap_connect('ldaps://ldap01');
// 'ldap01' should match the CN in your LDAP server's SSL cert, otherwise the
subsequent ldap_bind() will throw a bind error
?>
You can check your LDAP server's SSL cert using Openssl utility (Linux) - look
for the 'Subject' line:
$ openssl x509 -in /etc/pki/tls/certs/ldap01.crt -text -noout
...
Subject: C=XY, ST=My State, L=My City, O=My Org, CN=ldap01/emailAddress
<EMAIL_ADDRESS>...
I recently applied some updates to my system (now Centos 5.7 and PHP 5.3.6) and
started having this issue with PHP scripts that had been fine previously where
I was simply using the IP address of the server. Replacing the IP address with
the hostname fixed my issue.
===============================================================================
It seems that Active Directory stores information in UTF8 format.
I needed to utf8_encode() the username and password otherwise the bind failed
when a user has accented characters in his password...
===============================================================================
As "john dot lewis at waldenweb dot com" correctly writes (and this is
important to note and SHOULD be incorporated into the documentation as a
warning - trying to bind with specific username and empty password will return
TRUE.
===============================================================================
In some structures its not possible to know the dn or rdn up front. However one
can use $ldapuser=<EMAIL_ADDRESS>===============================================================================
If you are still having trouble after following all the instructions on the Web
to get LDAPS to work, here's what worked for me:
I was trying to do LDAPS connection (our LDAP server was using port 40636) by
running following command:
ldap_connect("www.example.com",40636)
This didn't work for days till I changed it to the following format:
ldap_connect("ldaps://www.example.com:40636")
Hope it'll help some out there.
-Cagdas
===============================================================================
It's nessesary to add:
for ldap_bind returned true, while you try to bind for openldap (at least
version 2.4.21)
===============================================================================
Hi All, I just thought people should realize that the bug, or whatever change
that was implemented with slapd and Openldap for the version V3 protocol has
either not been repaired, or isn;t believed to be a bug or whatever...but still
requires an implicit setting to V3 for use of the ldap_bind function. I am
using Apache 2 and PHP 5.1 with LDAP 2. The default is set to deny V2 protocol,
and even reconfiguring the slapd config file will not fix the problem.
You must still use the ldap_set_option function.
EX:
Thanks to Ken on below for showing the way. There was a slight code error in
what he chose as his link_id, but thats all. This code above worked nice and
shinny, and demonstrates we are still working with 2004 problems. I wish they
would update this in the code above.
===============================================================================
Set timeout for ldap_bind:
ref. https://bugs.php.net/bug.php?id=42837
===============================================================================
When using Active Directory 2003 (possibly also 2000) you can't search
anonymously so you have to bind with a (known) user and password. Or else you
will get an Search operations error. I also can confirm that an empty password
bind succeeds! So test for an empty password first!
Some excellent information is found here:
http://www.scit.wlv.ac.uk/~jphb/sst/php/extra/ldap.html
http://www.scit.wlv.ac.uk/~jphb/sst/basics/ldap.html
===============================================================================
Getting an error "Can't contact LDAP server"
Solved by adding:
TLS_CACERTDIR /etc/openldap/cacerts
TLS_CACERT /etc/openldap/ssl/cacert.pem
===============================================================================
You should NOT attempt to bind with a made up password. However small the
chance, the chance remains that your code produces a valid password. The
correct behaviour is to test for an empty password, and if your application
will only service authenticated users, not perform any more LDAP operations on
behalf of the user - this also happens to be more efficient.
===============================================================================
LDAP control support is missing from this implementation. Response controls
might be part of the response(s) to the BIND request and must be handled in
code.
===============================================================================
I'm using OpenLDAP on linux and found out the right bind sequence the hard
way... so I'm sharing it with you:
(wkaiser solution is ok if everything works fine, but for development I would
suggest using ldap_error command like this)
");
echo("msg:'".ldap_error($ds)."'");#check if the message isn't: Can't
contact LDAP server :)
#if it say something about a cn or user then you are trying with the wrong
$dn pattern i found this by looking at OpenLDAP source code :)
#we can figure out the right pattern by searching the user tree
#remember to turn on the anonymous search on the ldap server
if ($bind=ldap_bind($ds)) {
$filter = "(cn=*)";
if (!($search=@ldap_search($ds, $ldapconfig['basedn'], $filter))) {
echo("Unable to search ldap server
");
echo("msg:'".ldap_error($ds)."'");#check the message again
} else {
$number_returned = ldap_count_entries($ds,$search);
$info = ldap_get_entries($ds, $search);
echo "The number of entries returned is ". $number_returned."
";
for ($i=0; $i<$info["count"]; $i++) {
var_dump($info[$i]);#look for your user account in this pile of junk
and apply the whole pattern where you build $dn to match exactly the ldap tree
entry
}
}
} else {
echo("Unable to bind anonymously
");
echo("msg:".ldap_error($ds)."
");
}
}
?>
as you can see most of the examples use "cn=username" and OpenLDAP uses "uid=
username" but who knows what will be used in the future builds, this code will
help you check it out (I hope :)
===============================================================================
I tried using putenv() to point LDAP to the certificate path etc.
putenv("TLS_CACERT=/path/to/certificate");
putenv("TLS_REQCERT=never");
This did not work for me. It has to be in the Apache configuration or LDAP
configuration:
LDAP CONFIGURATION
Put these values in ldap.conf:
TLS_CACERT /path/to/certificate
TLS_REQCERT never
The path varies on UNIX systems.
On Windows it is C:\openldap\sysconf\ldap.conf
APACHE CONFIGURATION
Add these values to httpd.conf:
LDAPTrustedGlobalCert
\n";
} else {
echo "version 2
\n";
}
echo "verification on '$ldap_server': ";
// bind to ldap connection
if(($bind=@ldap_bind($connect)) == false){
print "bind:__FAILED__
\n";
return false;
}
// search for user
if (($res_id = ldap_search( $connect,
"dc=auto,dc=tuwien,dc=ac,dc=at",
"uid=$username")) == false) {
print "failure: search in LDAP-tree failed
";
return false;
}
if (ldap_count_entries($connect, $res_id) != 1) {
print "failure: username $username found more than once
\n";
return false;
}
if (( $entry_id = ldap_first_entry($connect, $res_id))== false) {
print "failur: entry of searchresult couln't be fetched
\n";
return false;
}
if (( $user_dn = ldap_get_dn($connect, $entry_id)) == false) {
print "failure: user-dn coulnd't be fetched
\n";
return false;
}
/* Authentifizierung des User */
if (($link_id = ldap_bind($connect, $user_dn, $password)) == false) {
print "failure: username, password didn't match: $user_dn
\n";
return false;
}
return true;
@ldap_close($connect);
} else { // no conection to ldap server
echo "no connection to '$ldap_server'
\n";
}
echo "failed: ".ldap_error($connect)."
\n";
@ldap_close($connect);
return(false);
}//end function checkldapuser
Here a sample for using this function:
if (checkldapuser('myuser', 'secretpassword', 'ldap://link.to.ldap')) {
echo "ACCESS GRANTED\n";
} else {
echo "ACCESS DENIED\n";
}
===============================================================================
I am assuming that ldap_bind does a simple bind and that for other
types of bind, ldap_sasl_bind should be used.
Also, while the allow bind v2 solution will work with slapd, you really should
use ldap v3 if at all possible because of the security improvements and
better protocol definition. LDAP v2 is largely deprecated at this point.
Hopefully the PHP default LDAP version will move to v3 soon.
===============================================================================
As noted before with the password, I have found that if either of the valuse
for user or password are blank, or as in my case a typo resulted in a blank
user as it was an undefined variable, the ldap_bind() will just perform an
anonymous bind and return true!
Shouldn't this detect the presence of the additional values and return an
error? At least if the user or password is passed. If they are both blank I'm
not sure what it should do.
===============================================================================
If you do not want to bind as unixadmin or *manager (i. e., for authentication
on web applications), the following code could be useful:
===============================================================================
I want to point out that the line that reads
"$ldaprdn = 'uname';"
is a bit confusing. You need to ensure that you use the entire rootdn. for
instance. your code should look more like this...
===============================================================================
OpenLdap 2.1.x libraries support both LDAPv2 and LDAPv3. The problem lies with
the slapd, the ldap server bundled with OpenLDAP. It's default supported
version is LDAPv3. One can set the "allow bind_v2" in the slapd.conf file, with
this configured, the PHP ldap_set_option() is not required.
===============================================================================
I ran into a problem where I was getting a protocol error when I tried to
bind. I was able to connect fine and ldap commands worked fine from the
command line.
The problem turned out to be that openldap (v 2.1.5) was starting up in version
3 ldap mode, and php (4.2.3) expected it to be in version 2 mode.
To fix this use the ldap_set_option command to change the version that php
expects.
===============================================================================
One useful item when trying to bind to Novell's NDS LDAP servers.
If you are using NDS 8 and attempt to bind it will work with a partail context.
As an example if you full context is cn=user.ou=sales.ou=division.o=company
and you use as your authentication context cn=user.o=company it will work.
But you will be required to supply the full context to authenticate to an
eDirectory based LDAP setup. Such as Netware 6 or eDirectory 8.5 or greater.
Also when using the wildcard * symbol in your object class. If you are not
careful it is possible to dump the entire contents of your NDS tree into an
array.
===============================================================================
An example to help you authenticate against M$ Exchange, rather than use
anonymous mode...
you will need to create an NT domain member (I've called it ldapquery) and give
it search permission in the LDAP protocol settings in Exchange.
then:
$ds=ldap_connect ("


| 1 |
Li_Y_2005 |
Effects of wearing N95 and surgical facemasks on heart rate, thermal stress and subjective sensations |
Li, Y.; Tokura, H.; Guo, Y.P.; Wong, A.S.W.; Wong, T.; Chung, J.; Newton, E. |
2005 |
2005-05-26 |
PMC |
N |
PMC7087880 |
15918037.0 |
10.1007/s00420-004-0584-4 |
uhkff67h |
0.949146 |
Dawes_2007, Trampuz_2004, Rebmann_2013 |
Gao_S_2016, Kim_J_2016 |
| 2 |
Kim_J_2016 |
Physiologic and fit factor profiles of N95 and P100 filtering facepiece respirators for use in hot, humid environments |
Kim, Jung-Hyun; Wu, Tianzhou; Powell, Jeffrey B.; Roberge, Raymond J. |
2016 |
2016-02-01 |
PMC |
N |
PMC7115280 |
26476496.0 |
10.1016/j.ajic.2015.08.027 |
er3ndh79 |
0.911219 |
Li_Y_2005, Roberge_2010 |
Shin_2017 |
| 3 |
Roberge_2010 |
Reusable elastomeric air-purifying respirators: Physiologic impact on health care workers |
Roberge, Raymond J.; Coca, Aitor; Williams, W. Jon; Powell, Jeffrey B.; Palmiero, Andrew J. |
2010 |
2010-06-30 |
PMC |
N |
PMC7115335 |
20189685.0 |
10.1016/j.ajic.2009.11.006 |
caxz025z |
0.781723 |
Hines_2019 |
|
| 4 |
Lam_S_2016 |
Evaluation of the user seal check on gross leakage detection of 3 different designs of N95 filtering facepiece respirators |
Lam, Simon C.; Lui, Andrew K.F.; Lee, Linda Y.K.; Lee, Joseph K.L.; Wong, K.F.; Lee, Cathy N.Y. |
2016 |
2016-05-01 |
PMC |
N |
PMC7115279 |
26831273.0 |
10.1016/j.ajic.2015.12.013 |
mc0xa5om |
0.772115 |
|
Lam_S_2011, Derrick_2005, Patel_2016, Benson_2013 |
| 5 |
Lam_S_2011 |
Sensitivity and specificity of the user-seal-check in determining the fit of N95 respirators |
Lam, S.C.; Lee, J.K.L.; Yau, S.Y.; Charm, C.Y.C. |
2011 |
2011-03-31 |
PMC |
N |
PMC7114945 |
21236516.0 |
10.1016/j.jhin.2010.09.034 |
q7598a7n |
0.767387 |
|
Derrick_2005, Lam_S_2016, Benson_2013 |
| 6 |
Mills_2018 |
Ultraviolet germicidal irradiation of influenza-contaminated N95 filtering facepiece respirators |
Mills, Devin; Harnish, Delbert A.; Lawrence, Caryn; Sandoval-Powers, Megan; Heimbuch, Brian K. |
2018 |
2018-07-31 |
PMC |
N |
PMC7115285 |
29678452.0 |
10.1016/j.ajic.2018.02.018 |
98vmwrx1 |
0.664753 |
Roberge_2008, Casanova_2008 |
|
| 7 |
Rengasamy_2015 |
Resistance to synthetic blood penetration of National Institute for Occupational Safety and Health-approved N95 filtering facepiece respirators and surgical N95 respirators |
Rengasamy, Samy; Sbarra, Deborah; Nwoko, Julian; Shaffer, Ronald |
2015 |
2015-11-01 |
None |
N |
PMC4658509 |
26231551.0 |
10.1016/j.ajic.2015.06.014 |
wcc9aixo |
0.644578 |
Esswein_2004 |
Benson_2013, Patel_2016, Wen_Z_2010 |
| 8 |
Gao_S_2016 |
Performance of Facepiece Respirators and Surgical Masks Against Surgical Smoke: Simulated Workplace Protection Factor Study |
Gao, Shuang; Koehler, Richard H.; Yermakov, Michael; Grinshpun, Sergey A. |
2016 |
2016-02-28 |
PMC |
N |
PMC7109898 |
26929204.0 |
10.1093/annhyg/mew006 |
59eapeu6 |
0.611730 |
|
Benson_2013, Patel_2016, Shin_2017 |
| 9 |
Palmiero_2016 |
SPEECH INTELLIGIBILITY ASSESSMENT OF PROTECTIVE FACEMASKS AND AIR-PURIFYING RESPIRATORS |
Palmiero, Andrew J.; Symons, Daniel; Morgan, Judge W.; Shaffer, Ronald E. |
2016 |
2016-06-30 |
PMC |
N |
PMC5065390 |
27362358.0 |
10.1080/15459624.2016.1200723 |
rl1sxssb |
0.570959 |
|
Shin_2017, Patel_2016 |
| 10 |
Hines_2019 |
User acceptance of reusable respirators in health care |
Hines, Stella E.; Brown, Clayton; Oliver, Marc; Gucer, Patricia; Frisch, Melissa; Hogan, Regina; Roth, Tracy; Chang, James; McDiarmid, Melissa |
2019 |
2019-06-30 |
PMC |
N |
PMC7115316 |
30638674.0 |
10.1016/j.ajic.2018.11.021 |
edspdu5x |
0.568288 |
Dawes_2007 |
Baig_2010, Shin_2017, Benson_2013 |
| 11 |
McMahon_2008 |
Implementing fit testing for N95 filtering facepiece respirators: Practical information from a large cohort of hospital workers |
McMahon, Elizabeth; Wada, Koji; Dufresne, André |
2008 |
2008-05-31 |
PMC |
N |
PMC7115286 |
18455051.0 |
10.1016/j.ajic.2007.10.014 |
hxomlo9f |
0.557767 |
|
Shin_2017, Meijer_2020 |
| 12 |
Li_Y_2008 |
Transmission of communicable respiratory infections and facemasks |
Li, Yi; Guo, Yue Ping; Wong, Kwok Ching Thomas; Chung, Wai Yee Joanne; Gohel, Mayur Danny Indulal; Leung, Hang Mei Polly |
2008 |
2008-05-01 |
PMC |
N |
PMC3004550 |
21197329.0 |
|
sl6gsjz4 |
0.501847 |
Dawes_2007, Deng_2015 |
MacIntyre_2009 |
| 13 |
Oberg_2008 |
Surgical mask filter and fit performance |
Oberg, Tara; Brosseau, Lisa M. |
2008 |
2008-05-31 |
PMC |
N |
PMC7115281 |
18455048.0 |
10.1016/j.ajic.2007.07.008 |
bmmdygbs |
0.467833 |
|
Patel_2016, Benson_2013, CHECCHI_2005 |
| 14 |
Hwang_2020 |
N95 filtering facepiece respirators do not reliably afford respiratory protection during chest compression: A simulation study |
Hwang, Sung Yeon; Yoon, Hee; Yoon, Aerin; Kim, Taerim; Lee, Guntak; Jung, Kwang Yul; Park, Joo Hyun; Shin, Tae Gun; Cha, Won Chul; Sim, Min Seob; Kim, Seonwoo |
2020 |
2020-01-31 |
PMC |
N |
PMC7125572 |
30955924.0 |
10.1016/j.ajem.2019.03.041 |
gh9sy7sl |
0.465983 |
|
Shin_2017, Lim_T_2017, Patel_2016 |
| 15 |
Fischer_2020 |
Assessment of N95 respirator decontamination and re-use for SARS-CoV-2 |
Robert Fischer; Dylan H Morris; Neeltje van Doremalen; Shanda Sarchette; Jeremiah Matson; Trenton Bushmaker; Claude Kwe Yinda; Stephanie Seifert; Amandine Gamble; Brandi Williamson; Seth Judson; Emmie de Wit; Jamie Lloyd-Smith; Vincent Munster |
2020 |
2020-04-15 |
BioRxiv |
Y |
|
|
10.1101/2<IP_ADDRESS>62018 |
oam77j3m |
0.455893 |
Dawes_2007, Roberge_2008 |
Smith_2020 |
| 16 |
Roberge_2008 |
Evaluation of the rationale for concurrent use of N95 filtering facepiece respirators with loose-fitting powered air-purifying respirators during aerosol-generating medical procedures |
Roberge, Raymond J. |
2008 |
2008-03-31 |
PMC |
N |
PMC7115289 |
18313516.0 |
10.1016/j.ajic.2007.04.284 |
89qf438h |
0.450323 |
|
Benson_2013, Sreeramoju_2017, Shin_2017 |
| 17 |
Rebmann_2013 |
Physiologic and other effects and compliance with long-term respirator use among medical intensive care unit nurses |
Rebmann, Terri; Carrico, Ruth; Wang, Jing |
2013 |
2013-12-31 |
PMC |
N |
PMC7132714 |
23768438.0 |
10.1016/j.ajic.2013.02.017 |
ybjnep46 |
0.450189 |
Stone_2004 |
|
| 18 |
Derr_2020 |
Aerosolized Hydrogen Peroxide Decontamination of N95 Respirators, with Fit-Testing and Virologic Confirmation of Suitability for Re-Use During the COVID-19 Pandemic |
T. Hans Derr; Melissa A. James; Chad V. Kuny; Prem P. Kandel; Matthew D. Beckman; Kevin L. Hockett; Mark A. Bates; Moriah L Szpara |
2020 |
2020-04-22 |
BioRxiv |
Y |
|
|
10.1101/2<IP_ADDRESS>68577 |
d1crwbuz |
0.430584 |
|
|
| 19 |
Harnish_2013 |
Challenge of N95 Filtering Facepiece Respirators with Viable H1N1 Influenza Aerosols |
Harnish, Delbert A.; Heimbuch, Brian K.; Husband, Michael; Lumley, April E.; Kinney, Kimberly; Shaffer, Ronald E.; Wander, Joseph D. |
2013 |
2013-05-01 |
PMC |
N |
PMC4646082 |
23571366.0 |
10.1086/670225 |
c7rskz41 |
0.408767 |
|
|
| 20 |
Rengasamy_2004 |
Respiratory protection against bioaerosols: Literature review and research needs |
Rengasamy, Appavoo; Zhuang, Ziqing; BerryAnn, Roland |
2004 |
2004-10-31 |
PMC |
N |
PMC7118892 |
15454893.0 |
10.1016/j.ajic.2004.04.199 |
ei8ad6ci |
0.394642 |
Roberge_2008 |
Bing-Yuan_2018, Gamage_2005 |
| 21 |
Gosch_2013 |
B95: A new respirator for health care personnel |
Gosch, Megan E.; Shaffer, Ronald E.; Eagan, Aaron E.; Roberge, Raymond J.; Davey, Victoria J.; Radonovich, Lewis J. |
2013 |
2013-12-31 |
PMC |
N |
PMC7115300 |
23726655.0 |
10.1016/j.ajic.2013.03.293 |
36cs0vt9 |
0.391208 |
|
Baig_2010, Benson_2013 |
| 22 |
Smith_2020 |
Effect of various decontamination procedures on disposable N95 mask integrity and SARS-CoV-2 infectivity |
Jeffrey S. Smith; Haley Hanseler; John Welle; Rogan Rattray; Mary Campbell; Tacy Brotherton; Tarsem Moudgil; Thomas F. Pack; Keith Wegmann; Shawn Jensen; Justin S. Jin; Carlo B. Bifulco; Bernard A. Fox; Nicholas L. Stucky |
2020 |
2020-04-15 |
BioRxiv |
Y |
|
|
10.1101/2<IP_ADDRESS>62331 |
tq9kjozt |
0.381015 |
Roberge_2008, Casanova_2008 |
|
| 23 |
Oral_2020 |
Vapor H2O2 sterilization as a decontamination method for the reuse of N95 respirators in the COVID-19 emergency |
Ebru Oral; Keith K Wannomae; Rachel L Connolly; Joseph A Gardecki; Hui Min Leung; Orhun K Muratoglu; Anthony Griffiths; Anna N Honko; Laura E Avena; Lindsay GA McKay; Nick Flynn; Nadia Storm; Sierra N Downs; Ralph Jones; Brandon Emmal |
2020 |
2020-04-16 |
BioRxiv |
Y |
|
|
10.1101/2<IP_ADDRESS>62026 |
gty8pxkz |
0.363241 |
|
|
| 24 |
Fisher_2014 |
Commentary Considerations for Recommending Extended Use and Limited Reuse of Filtering Facepiece Respirators in Health Care Settings |
Fisher, Edward M.; Shaffer, Ronald E. |
2014 |
2014-03-14 |
None |
N |
PMC4610368 |
24628658.0 |
10.1080/15459624.2014.902954 |
bnl6c9wp |
0.325227 |
|
Benson_2013, Trampuz_2004, Strauch_2016 |


Copyright © 2014 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. W3C liability, trademark and document use rules apply.
This specification defines the app: URL scheme.
The app: URL scheme can be used by packaged applications to obtain resources that are inside a container. These resources can then be used with web platform features that accept URLs.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.
This document was published by the System Applications Working Group as a Last Call Working Draft. If you wish to make comments regarding this document, please send them to<EMAIL_ADDRESS>(subscribe, archives). All comments are welcome.
Publication as a Last Call Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
This document was produced by a group operating under the 5 February 2004 W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.
This specification is a Last Call Working Draft. All persons are encouraged to review this document and send comments to the public-sysapps mailing list as described above. The deadline for comments is 24 June 2014.
An app: URL is a [URL] that can be used by a packaged application to address resources within its container (e.g., a .zip file).
The instance identifier is a string that uniquely identifies an instance of a packaged application.
When the instance identifier is not provided by the developer, a
user agent MUST synthesize one. The structure and length of identifier
represented by the authority is application specific, but it MUST be
suitable to use as a Document
's origin. See also privacy and security considerations.
This section is non-normative.
Using unique identifiers (e.g., a UUID) as an instance identifier can be exploited by an adversary as a digital finger print. This can allow a developer to, for example, restore cookies even if the user has cleared cookies from a user agent. As such, if the user agent relies on unique identifiers as the host component, then it should provide end-users with a means of regenerating the authority component. For instance, A user agent can the regenerate the instance identifier when the user clears the user agent's private data.
This section is non-normative.
To fetch a resource using the app: URL using a request request:
GET
`, or if origin does not match
the instance identifier for this application, return a
network
error.
Range`
header:
When fetching data from an app: URL, a user agent needs to make sure that only files that were in the container can be accessed (i.e., those files should be sand-boxed). User agents need to watch out for symbolic links (or similar) inside a container, which can attempt to trick the user agent into accessing files that are on other parts of the file system.
As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.
The key words MUST, MUST NOT, REQUIRED, SHOULD, SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL in this specification are to be interpreted as described in [RFC2119].
There is one class of product that can claim conformance to this specification: a user agent.
A user agent is an implementation of this specification.
For developers, this specification attempts to address the following use cases:
http://
or
app://
- the Web's capabilities and APIs need to just
work!
The following example shows [HTML]'s window.location
using
then app: URL.
<!doctype html> <script> //Example using HTML's Location object var loc = window.location; console.log(loc.protocol === "app:"); //true console.log(loc.host === "com.foo.bar"); //true console.log(loc.href === "app://com.foo.bar/index.html"); //true console.log(loc.origin === "app://com.foo.bar"); //true console.log(loc.pathname === "/index.html"); //true console.log(loc.hash === "#example"); //true console.log(loc.port === ""); //true </script>
This example shows an app: URL being resolved in [HTML].
var img = document.createElement("img"); //the following setter triggers HTML's resolve algorithm img.src = "example.gif"; //and the expected output: console.log(img.src === "app://c13c6f30/example.gif") //true //Append the image to the document document.body.appendChild(img); </script>
This example shows a resource within a packaged application being retrieved over [XHR].
function process() { // process the resulting data } var xhr = new XMLHttpRequest(); xhr.onload = () => process(this.responseText); xhr.open( "GET", "playlist.json"); xhr.send();
This example shows how an app: URL can be used in conjunction
with a HTTP `Range`
header to request a range of bytes
from a file inside a package.
var url = "sample.mp3"; var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); xhr.responseType = "arraybuffer"; xhr.setRequestHeader('Range', 'bytes=100-199'); xhr.send(); console.log(Uint8Array(xhr.response).byteLength === 100);// true
The bulk of the text in this specifications was derived from the Widget URI scheme specification. The Systems Application working group acknowledge the hard work of the Web Applications Working Group in laying down the foundations for this specification.


{% extends "global/Page.html" %} {% load otree %} {% block title %} Results {% endblock %} {% block content %} {% if player.role == 'A' %}
You were initially endowed with {{ Constants.endowment }} .
You chose to send participant B {{ group.sent_amount }}.
You received {{ group.sent_back_amount }}.
Therefore, you now have:
{{ Constants.endowment }}-{{ group.sent_amount }}+{{ group.sent_back_amount }} = {{ player.payoff }}
While participant A has {{ payoff_A }} points
Participant A sent you {{ group.sent_amount }}.
They were tripled so you received {{ tripled_amount }}.
You chose to return {{ group.sent_back_amount }}.
Therefore, you now have:
({{ tripled_amount }})-({{ group.sent_back_amount }}) = {{ player.payoff }}
While participant B has {{ payoff_B }} points
{% next_button %}
{% include Constants.instructions_template %} {% endblock %}


THE QUEST A film review by Chuck Dowling Copyright 1996 Chuck Dowling
(1996) *** - C:Jean Claude Van Damme, Roger Moore.
I was fully prepared to hate this film. I haven't liked any Van Damme movie in the past, so why would now be any different? And he directs the film as well. I figured that this would be like Steven Seagal's "On Deadly Ground", where an egomaniac was given too much control and wound up making a truly awful film. But, I found "The Quest" to be pleasantly entertaining, and worth an hour and thirty-five minutes of my life.
Van Damme isn't trying to do anything new with the kickboxing genre, and that's good because there really isn't anything new that CAN be done with it. He plays a pickpocket in the 1920s who, through a series of accidents, ends up in the "Lost City" somewhere in Asia fighting in a worldwide tournament to find out who is the world's best fighter. Along the way he meets up with Roger Moore, who plays an suave ex-British Navy man who has gone into business for himself, which includes pirating ships and stealing anything valuable that he can get his hands on.
Van Damme as a director surprised me. The film looks and feels completely authentic, and the fight scenes are well staged (he does use slow-motion just a bit too much however). Also, he doesn't make his character the star of the film. Whenever Moore is on screen, Moore is the center of the camera's attention as Van Damme just stands in the background listening to his every word. Also, his character doesn't even think he can win the tournament until late in the film, so he's not cocky and arrogant which would have easily become annoying.
"The Quest" is not a great film by any means. It's simple, it uses all the cliches of the genre and offers nothing really new. But it doesn't try to be anything different than that. It succeeds at what it wanted to succeed at, which was to be mildly entertaining. Roger Moore (who IMO was the best Bond) steals the film and I'm glad he did. He's fun to watch. Don't expect much from "The Quest", and you just might find yourself being entertained.
-- Chuck Dowling Visit Chuck's Movie Reviews at http://users.southeast.net/~chuckd21/ Over 1,500 movies rated and/or reviewed! Movie news, box office reports, film related links, and reader's polls and reviews.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


public interface IImageLine
The methods from this interface provides translation from/to PNG raw unfiltered pixel data, for each image line. This doesn't make any assumptions of underlying storage.
The user of this library will not normally use this methods, but instead will cast to a more concrete implementation,
as ImageLineInt
or ImageLineByte
with its methods for accessing the pixel values.
| Modifier and Type | Method and Description |
|---|---|
void |
endReadFromPngRaw()
This is called when the read for the line has been completed (eg for interlaced).
|
void |
readFromPngRaw(byte[] raw,
int len,
int offset,
int step)
Extract pixels from a raw unlfilterd PNG row.
|
void |
writeToPngRaw(byte[] raw)
Writes the line to a PNG raw byte array, in the unfiltered PNG format Notice that the first byte is the filter
type, you should write it only if you know it.
|
void readFromPngRaw(byte[] raw, int len, int offset, int step)
void endReadFromPngRaw()
void writeToPngRaw(byte[] raw)
Copyright © 2014. All rights reserved.