Curling 2.0
问题描述 :
On Planet MM-21, after their Olympic games this year, curling is getting popular. But the rules are somewhat different from ours. The game is played on an ice game board on which a square mesh is marked. They use only a single stone. The purpose of the game is to lead the stone from the start to the goal with the minimum number of moves.
Fig. 1 shows an example of a game board. Some squares may be occupied with blocks. There are two special squares namely the start and the goal, which are not occupied with blocks. (These two squares are distinct.) Once the stone begins to move, it will proceed until it hits a block. In order to bring the stone to the goal, you may have to stop the stone by hitting it against a block, and throw again.
Fig. 1: Example of board (S: start, G: goal)
The movement of the stone obeys the following rules:
- At the beginning, the stone stands still at the start square.
- The movements of the stone are restricted to x and y directions. Diagonal moves are prohibited.
- When the stone stands still, you can make it moving by throwing it. You may throw it to any direction unless it is blocked immediately(Fig. 2(a)).
- Once thrown, the stone keeps moving to the same direction until one of the following occurs:
- The stone hits a block (Fig. 2(b), (c)).
- The stone stops at the square next to the block it hit.
- The block disappears.
- The stone gets out of the board.
- The game ends in failure.
- The stone reaches the goal square.
- The stone stops there and the game ends in success.
- The stone hits a block (Fig. 2(b), (c)).
- You cannot throw the stone more than 10 times in a game. If the stone does not reach the goal in 10 moves, the game ends in failure.
Fig. 2: Stone movements
Under the rules, we would like to know whether the stone at the start can reach the goal and, if yes, the minimum number of moves required.
With the initial configuration shown in Fig. 1, 4 moves are required to bring the stone from the start to the goal. The route is shown in Fig. 3(a). Notice when the stone reaches the goal, the board configuration has changed as in Fig. 3(b).
Fig. 3: The solution for Fig. D-1 and the final board configuration
输入:
The input is a sequence of datasets. The end of the input is indicated by a line containing two zeros separated by a space. The number of datasets never exceeds 100.
Each dataset is formatted as follows.
the width(=w) and the height(=h) of the board
First row of the board
…
h-th row of the board
The width and the height of the board satisfy: 2 <= w <= 20, 1 <= h <= 20.
Each line consists of w decimal numbers delimited by a space. The number describes the status of the corresponding square.
0 vacant square 1 block 2 start position 3 goal position
The dataset for Fig. D-1 is as follows:
6 6
1 0 0 2 1 0
1 1 0 0 0 0
0 0 0 0 0 3
0 0 0 0 0 0
1 0 0 0 0 1
0 1 1 1 1 1
输出:
For each dataset, print a line having a decimal integer indicating the minimum number of moves along a route from the start to the goal. If there are no such routes, print -1 instead. Each line should not have any character other than this number.
样例输入:
2 1 3 2 6 6 1 0 0 2 1 0 1 1 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 1 1 1 6 1 1 1 2 1 1 3 6 1 1 0 2 1 1 3 12 1 2 0 1 1 1 1 1 1 1 1 1 3 13 1 2 0 1 1 1 1 1 1 1 1 1 1 3 0 0
样例输出:
1 4 -1 4 10 -1
解题代码:
//* @author import java.util.*; public class Main { static final int MAX= 30; static int w,h; static int start_x,start_y; static int flag[][] = new int[MAX][MAX]; static int min=11; static int step=1; static void dfs(int x,int y,int step) { if(step>10) return; if(step==min) return; for(int i=x+1;i< h;i++) { if(i==x+1&&flag[i][y]==1) break; if(flag[i][y]==3){if(min>step) min=step;return;} if(flag[i][y]==1&&step< min){flag[i][y]=0;dfs(i-1,y,step+1);flag[i][y]=1;break;} } for(int i=x-1;i>=0;i--) { if(i==x-1&&flag[i][y]==1) break; if(flag[i][y]==3){if(min>step);min=step;return;} if(flag[i][y]==1&&step< min){flag[i][y]=0;dfs(i+1,y,step+1);flag[i][y]=1;break;} } for(int i=y+1;i< w;i++) { if(i==y+1&&flag[x][i]==1) break; if(flag[x][i]==3){if(min>step) min=step;return;} if(flag[x][i]==1&&step< min){flag[x][i]=0;dfs(x,i-1,step+1);flag[x][i]=1;break;} } for(int i=y-1;i>=0;i--) { if(i==y-1&&flag[x][i]==1) break; if(flag[x][i]==3&&step< min){if(min>step) min=step;return;} if(flag[x][i]==1&&step< min){flag[x][i]=0;dfs(x,i+1,step+1);flag[x][i]=1;break;} } return; } public static void main(String[] args) { Scanner in = new Scanner(System.in); while(true) { w=in.nextInt(); h=in.nextInt(); if(w==0&&h==0) break; for(int i=0;i< h;i++) { for(int j=0;j< w;j++) { flag[i][j]=in.nextInt(); if(flag[i][j]==2) { start_x=i; start_y=j; flag[i][j]=0; } } } step=1; min=11; dfs(start_x,start_y,step); if(min==11) System.out.println("-1"); else System.out.println(min); } } }
您没有考虑 树的根节点是负数的情况， 若树的根节点是个很大的负数，那么就要考虑过不过另外一边子树了
编辑的时候有些不小心了
afsasfasfasf
Thanks for taking the time to examine this, I really feel strongly about it and love studying a lot more on this topic. If possible, as you acquire experience
remove没有实现
其实国内大部分公司对算法都不够重视。特别是中小型公司老板根本都不懂技术，也不懂什么是算法，从而也不要求程序员懂什么算法，做程序从来不考虑性能问题，只要页面能显示出来就是好程序，这是国内的现状，很无奈。
great work！
afsasfasfasf
较好的写法是 start+(end-start)/2
我又来学习了
什么破题，题意好难懂啊
第一种方法怎么会是O(log(m+n))呢？没有二分的话直接遍历应该就是O(m+n)吧？
很强大啊，佩服


| DOSE: |
12 mg |
oral |
2C-B-Fly |
(powder / crystals) |
<3>
Material: 2CB-fly
Dosage: 12mg
Date: 7/6/08
Setting: Living room on a Sunday afternoon in the company of my wife and dog.
Set: I am a bit exhausted from a couple previous days of hard work and more stress than usual. I do feel slightly down, but not deeply. I have hopes the 2CB-fly will transcend those feelings into productive insight, an enjoyable day, and relaxing evening. One of my main focuses for this trip is “How I can be a better person”. I had toyed with other focuses but decided this is good because it leaves a lot of space to explore many aspects of myself. And on the interpersonal, it has been awhile since we’ve had a nice adventure like this so I’d like to have some good communication with my wife.
*Wife’s comment*- I’m feeling a little down, and stressed as well. I decide to avoid taking the Klonopin I usually take for anxiety, since I haven’t needed it in regular it on a normal day in a few months.
12:00pm – took 12mg of 2CB-fly in a shot glass with Pepsi. The taste is even more bitter than I remember. This is followed by normal nervous stomach upset.
*Wife’s comment* - I sprinkle the same amount into a brownie. The chocolate mostly covers up the bitter taste, but there is still that horrid aftertaste.
Routine thoughts:
I seem to usually be a fan of breaking routine but I’m realizing that right now the thing that would lower my stress level is having a routine which works. It would work to increase possibilities, income, natural surroundings, vacations, and artistic projects.
12:45pm – I’m feeling an increasing body buzz. I feel like I drank 3 cups of coffee.
1:00pm – Getting my first sign of visuals. I’m gaining insight on strengthening relationships with the elderly people in my life.
1:07pm – Wife says she’s feeling sleepy. I remember her having that experience last time we did 2CB-fly too. I’m feeling completely out of my down feeling now. I’m having moments where it’s hard to keep a smile off of my face.
Frames per second thoughts:
I had the thought that our TVs show at 24-30 frames per second which is parallel to how much information our brains can take in at one second. Birds and many other animals whose lives are shorter seem to move so much faster than us. Could it be possible they take in many more frames of information per second than humans? If this is true, this could make their lives seem much longer based only on passing moments (or frames).
1:35pm – We just finished flipping through the Communication Arts magazine. I realized all of these different images have their power from the viewer’s reaction to them.
Natural vs Synthetic both = natural reactions
This also makes me think that the ‘juice’ of using psychedelics is in our reaction as well, not in the materials themselves. And all of our reactions are natural whether the material is ‘natural’ or synthetic.
Art and Music in 2008 thoughts:
Looking through this magazine also gives me the appreciation that there is an abundance of great art and music now. Only 10 years ago we found ourselves saying, “There’s no quality music or art in the commercial world.” It seems this new abundance might be credited to the independent, honest, dream-living individuals who have found a way to utilize the internet.
Thinking for ourselves thoughts:
Educate yourself. It’s the cheapest way to get educated. Do you want to be taught something which isn’t being explored by the school boards?  The educational systems our country has been founded on would be toppled by this philosophy. It is the hardest and most important decision we have to make in thinking for ourselves.
History thoughts:
History is and will always be flawed by subjectivity. The truth is relative. As our perspective changes that “truth” might change too.
2:40pm – checking in with wife. I’m seeing visuals like a ceiling fan but incredibly vibrant with warm purples and browns. This is a subliminal backdrop to everything I’m thinking now. Everything just written was written between 1:40 and 2:40pm.
*Wife’s comment* - I decide to just put on some music. Listening to certain songs always helps to pull me out of whatever stresses are occupying my thoughts. After a while, I start feeling a little lonely because even though my husband is in the same room, I’m in our sunken living room, and he is in the dining room. I always like being on the same level, so I ask him to come down to the living room and join me.
2:40pm to about 8:00pm – The dialog is now opening up and we are coming out of out introverted shells. From this point to the end, I took many notes during the trip but did not record the time so it will be listed as conversations during that time.
The race conversation:
America turned into color when Dorothy arrived at Oz. This is the defining moment when our TV screens went from black and white into color. The wizard, the dream of Oz, and all the characters in the movie seem metaphoric to life itself. It’s about leaving behind the ideals of the past and coming into this wacky new colorful, exciting world full of promise and dreams. Why would people choose to live in black and white when they can live in full color?
We talk more about race and unity as we do a lot during trips. I realize if we are going to move forward, we have to shed our racial identities. This seems radical and disturbing in terms of people who are used to being defined by racial traditions. There must be an equal surrendering of our racial identities and equal acceptance and fusing of our cultural traditions. The simple idea that race is even an issue is the issue. My final thought is there are no winners in the race game.
Psychedelics as Tools conversation:
We talk more about psychedelics used as a tool for better living and a key to the possibilities in our own lives. We reiterate what we’ve been taught: It is not psychedelics that do the work, it’s us. We talk more about the burden of consciousness and our enormous responsibility to put a strong foot forward in our daily lives.
The Mystical Experience conversation:
In terms of religion and the mystical experience, the mystics understand that we cannot bottle and sell the experience. It is an enormous ever-present moving event which no individual can have the definition for because it is constantly changing. All we can be is a witness to it in the here and now. I accept that everything is ultimately unknown. This uncertainty sparks fear in me. The realization that knowledge is relative settles me. We agree that people can have this experience using their religion as the catalyst. We also agree that we and most psychedelic mystics probably have a fear of being the witches in the witch hunt.
DEA conversation:
We have a long conversation about drug policy, government control, and DEA funded propaganda. I realize drug problems are only problems to the people that have them. We both have a lot of resentment that these loving and productive experiences are actually illegal. We explore what the future might be like.
Business conversation:
We agree we like working with those who appreciate that our humble lifestyle is a sacrifice we make in order to create great art for them.
Conclusion: This trip offered more revelations and keys to better living than almost any other trip in the past. I apologize to any reader that finds this report preachy. Reading it back now seems like more of an editorial on society rather than on the material. This is about the 4th time we’ve done 2CB-fly. This material continues to be a great ally for us. It is smooth and allows for interpersonal connections that we haven’t found possible with other psychedelics. It feels familiar and relaxed. Even though I was slightly down with a fear of what may come from the trip, the 2CB-fly actually propelled me far out of that down state to one of the most enlightening experiences of my life.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Monitor App
Subscribers
AppSettings
Test Management
Run Tests
Test Bucket
Reports
User
Profile
Logout
1
Environment Details
2
Select Test Cases
3
Finalize Execution
Execution Name
Environment
Select Environment
QA
Testing Environment
Select Testing Environment
Internet Explorer
User Role
Select User Role
Test_Autoation2-StandingSupportStaff
Run in Threads
Select Threads
1
2
3
4
5
Schedule Tests
hh:mm
BACK
NEXT


Cupcake Stop
Our treats (from cupcakes to cookies to ice cream) will make any ocassion perfect. We are standing by to help you plan - simply give us a call and we can discuss the (endless) possibilities.<PHONE_NUMBER> -- if picking up your order please specify which location you would like to pick up your order. Our treats can be simple or crazy-custom - the choice is yours. Custom prices may vary. Sprinkle color options are always wide open when you place an order for cupcakes. From there we can get crafty and draw elaborate pictures or simple messages on our cupcakes and cakes. Pictures and messages on cupcakes start at $1.00 per treat.
SAINT CUPCAKE DELIVERS!
If you give us a little notice and have a minimum order of 24 dots or 12 full size we will deliver your cupcakes Monday - Friday! Delivery charges start at $15 and are based on mileage - give us a call for details. We generally make deliveries between 11am and 2pm, Monday through Friday but can often make exceptions depending on the bookings we have on a given day.***Please note: 50% of the cost of your order is non-refundable if you cancel your order within 48 hours of your scheduled pick-up or delivery time.***
Come see us!
- 2010 se montgomery st.
- Portland, or 97214
-<PHONE_NUMBER>


Hey all, Im having a strange problem here...
I have an arduino board monitoring two of its analog inputs, and sending the value of them to a Raspberry PI with OEM-Gateway installed via the instructions, over a serial connection to the PI. I have verified that oemgateway.conf is correctly setup, is listening to /dev/ttyAMA0 and does receive correct-looking data over that port.
For some reason, the RPI keeps telling me that it received a "malformed" RX string from the arduino (and does not attempt to post the info via HTTP), but then it shows an apparently correctly-formed set of data in the displayed str(received) string.
This is the arduino code that is sending the 'malformed' string via serial. Can anyone see anything glaringly wrong with it? (besides maybe a missed semi-colon or something, I typed it here, not pasted it...)
[code]
#include "EmonLib.h"
EnergyMonitor emon1;
EnergyMonitor emon2;
void setup(){
Serial.begin(9600);
emon1.current(A7, 59); // Current transformers on A6 & A7; "59" is the calib.
emon2.current(A6, 59);
}
void loop(){
double Irms1 = emon1.calcIrms(10000);
double Irms2 = emon2.calcIrms(10000);
int a = 12; //dummy sensor node number for now
Serial.print(a, DEC);
Serial.print(' ');
Serial.print('Irms1');
Serial.print(' ');
Serial.println('Irms2');
}
[/code]
seemingly simple, yet frustrating.... the RPI console will output something like :
INFO Serial RX: 12 0.05 9.8
WARNING Misformed RX packet: '12' '0.05' '9.8'
INFO Serial RX: 12 0.12 7.6
WARNING Misformed RX packet: ' 12' '0.12' '7.6'
(this is repeated every time the arduino sends a serial packet; '12' being nodeID, '0.05' and '9.8' are current in # amps measured from the two sensors)
the sensor values change as they normally would, so I know that the arduino is correctly sensing current, and sending the values, and the RPI is correctly seeing them come in over the GPIO serial port. If I plug the arduino into a PC and open serial port monitor, i see an apparently- correct string of data... I dont know why they are marked as 'misformed'... help?
Thanks
PS... this is the relevant section of oemgatewaylistener.py, I just dont know why
if (len(received) < 2)
is returning 'TRUE' when received() is supposedly '12' '0.05' '9.8'
[code]
def _process_frame(self, f):
"""Process a frame of data
f (string): 'NodeID val1 val2 ...'
This function splits the string into integers and checks their
validity.
'NodeID val1 val2 ...' is the generic data format. If the source uses
a different format, override this method.
Return data as a list: [NodeID, val1, val2]
"""
# Log data
self._log.info("Serial RX: " + f)
# Get an array out of the space separated string
received = f.strip().split(' ')
# Discard if frame not of the form [node, val1, ...]
# with number of elements at least 2
if (len(received) < 2):
self._log.warning("Misformed RX frame: " + str(received))
# Else, process frame
else:
try:
received = [int(val) for val in received]
except Exception:
self._log.warning("Misformed RX frame: " + str(received))
else:
self._log.debug("Node: " + str(received[0]))
self._log.debug("Values: " + str(received[1:]))
return received
[/code]
Re: Misformed RX packet from Arduino to RPI gateway via serial
Are you sure it's that line causing the issue? that log message is used multiple time in OEM gateway, in the excerpt you show, it is used again further on in the exception for the try: received = [int(val) for val in received], which will fail due to the float values. Try changing int(val) to float(val).
Paul
Re: Misformed RX packet from Arduino to RPI gateway via serial
In fact you should probably change that line from
received = [int(val) for val in received]
to
[float(val) for val in received]
so it doesn't get cast at all, just tested for all numeric content
Paul
Re: Misformed RX packet from Arduino to RPI gateway via serial
Winner, Winner.
I just tried your first suggestion of switching
received = [int(val) for val in received]
for
received = [float(val) for val in received]
and it is now posting correctly to my emoncms instance! Strange that all the arduino examples ive poured thru looking for this didnt mention the data type difference (or i missed it).
So now, which is more correct for the long run, this way, or
[float(val) for val in received]
?
Re: Misformed RX packet from Arduino to RPI gateway via serial
I don't think it's vitally important, but the purpose of the try: is to confirm all the values are numeric. the int(val) is left over from the int only days and float(int) works with both ints and floats, but if you use the received = float(val) that will cast all values to floats, which isn't necessary as a test will do.
If you look at your log entries now you will notice even the node id is a float, again it will work ok. I prefer the last way as it has no effect on the data, it only tests so floats remain floats and the node id and ints vals remain as ints - easier on the eye and the processor but only by a nano fraction :-)
either way is ok. The reason you probably didn't find any ref to this is that most data is piped to OEM gateway via an rfm2pi so most sketches are written for that application and then sometimes adapted for serial etc. to use rfm2pi & JeeLib, all values are transmitted as whole numbers and scaled at either end, a temperature of 19.5 is usually sent as 1950 and divided by 100 in emonCMS so floats just don't get used that often.
Paul


People dissapoint but pizza never does
Hawaiian-pizza
Meat pizza
pepperoni pizza
Order your pizza and we will deliver it in no time.
Your order will be processed and delivered within one hour of placing.
Make sure you have the total amout for the order during order delivery delivery.
Incase of any comment of complaint, Please reach out to us as fast as possible.
Regards, Management
| Name | Size | Crust | Topping | Total |
|---|---|---|---|---|
Delivery will cost sh. 150
Email<EMAIL_ADDRESS>Phone number:<PHONE_NUMBER>
Kasarani|Hunters
0200,Hunters


This is a cloud based sales management application. To start sale your products in the market register your company.


Crash with injuries leads to road closures on portion of Highway 81
by Brandon ArbuckleNEWARK, Wis. - A crash with injuries has led to road closures on a portion of Highway 81 Friday night.
According to an alert from the Wisconsin Department of Transportation, the crash happened on mile marker 107.8 near West Beloit Newark Road at 6:01 p.m. The highway between County Highway K and Moralty Road has been closed.
Officials said all lanes are blocked in both directions.
As an alternate route, westbound drivers can go north on County Highway K, west on Skinner Road and south on Moralty Road. This route is reversed for eastbound drivers.
Rock County dispatch said the Rock County Sheriff's Office and Orfordville Fire Department have responded to the scene.
Closures are expected to last for about two hours.


FRENCH TWIST A film review by Christopher Null Copyright 1996 Christopher Null
The French title of this odd little film is GAZON MAUDIT, a French euphemism meaning "dyke." Any wonder why the title was changed for the American audience?
This picture, starring the radiant and naked-most-of-the-time Victoria Abril (TIE ME UP! TIE ME DOWN! and HIGH HEELS), is a schizophrenic tour of Loli's (Abril) life. Her philandering husband Laurent (Alain Chabat) walks all over her. The kids are a constant effort. And when Marijo (Josiane Balasko, who co-wrote and directed as well), a butchest-of-the-butch lesbian, shows up owing to car trouble, a sudden bond of friendship is formed. When Laurent's dalliances finally go too far, Loli finds comfort in the arms...and the bed...and even the bathtub of Marijo.
So that's the titular "twist." And as a premise, it's not a bad one. Balasko's performance is exactly what was required to make the plausibility of the petite and erotic Abril fall for the decidedly non-petite and non-erotic Balasko. But after a brief (and fun) setup and payoff, the film rambles into a roller coaster of "does she or doesn't she" want to stay with her new lifestyle, followed by one false ending after another. The film finally finishes up on a sudden note that is totally confusing, suggesting further "twists on the twist," and by this time, the picture is so silly that any attempt at resolving this whole thing wanders into pointlessness.
Abril's performance is great, as usual, reminding us of her days with director Pedro Almodovar, and as mentioned above, Balasko is a very capable actress. Unfortunately, it appears she had a hand in too many things, as the script just falls apart at random places, becoming either too busy and hard-to-follow or too boring and hard-to-stay awake. Balasko's use of sex jokes is unrelenting (and no one is safe from her good-natured ribbing), but these too get old after the hundredth time.
In the final analysis, FRENCH TWIST is extremely muddled and feels much longer than its 107 minute running time. Fortunately, it has a few bright spots, including Balasko's subtle message about the cultural double standard between men and women, that will make it worthwhile for the viewer that is truly willing to be patient.
RATING: **1/2
\-------------------------------\ |* Unquestionably awful | |** Sub-par on many levels | |*** Average, hits and misses | |**** Good, memorable film | |***** Perfection | \-------------------------------\
-Christopher Null /<EMAIL_ADDRESS>-Screenwriter / Novelist / Publisher -Visit the Movie Emporium at http://cca2.carrington.com/emporium/ -and e-mail requests to join the movie review mailing list
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


This is a server warmup page, that should not be otherwise seen. Please got tho the Homepage
Sorry for the mixup.


{% extends 'base/base.html' %} {% block title %} Abstract Search Games {% endblock %} {% block navbar %} {% include "base/navbar.html" %} {% endblock %} {% block content %}
Put your search skills to the test in a game of strategies!
Play »
Signup » Login »


--- layout: default ---
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.


---
title: Getting Started
section: Docs
layout: page.html
---
{{#markdown}}
# Getting Started
## Download Zia.js
Download zia.js from the [GitHub repository](https://github.com/tgjones/zia.js):
* [zia.js](https://raw.githubusercontent.com/tgjones/zia.js/master/build/zia.js)
* [zia.min.js](https://raw.githubusercontent.com/tgjones/zia.js/master/build/zia.min.js)
## Create HTML file
Create a new HTML file:
```html
```
## Add script
Add script to the section marked "`// Add script here`".
{{/markdown}}
{{ exampleCode 'getting-started' }}
{{#markdown}}
## That's it!
You should see this:
{{/markdown}}


About VSearch
A web search engine created from scratch.
Built with Scrapy, MongoDB, and Flask.
View project here.
{% extends "base/base.html" %} {% block content %}
A web search engine created from scratch.
Built with Scrapy, MongoDB, and Flask.
View project here.


→
→
rnd
APP: CC BY
fukuno.jig.jp
(
src on GitHub
)
LIB:
WTFPL
luncheon/lch-color-wheel: A wheel-style color picker based on CIE L*C*h color space.


We are looking for speakers for our monthly meetups! To volunteer, please email us.
Our next meetup...
Our meetups take place on every 2nd Wednesday of the month from 7pm at the Oasis Conference Centre in Portsmouth.
--- layout: default --- {% include hero.html %}
We are looking for speakers for our monthly meetups! To volunteer, please email us.
Our meetups take place on every 2nd Wednesday of the month from 7pm at the Oasis Conference Centre in Portsmouth.


LOLCODE is an esoteric programming language inspired by lolspeak, the language expressed in examples of the lolcat Internet meme.The language was created in 2007 by Adam Lindsay, researcher at the Computing Department of Lancaster University. These short snippets show how Scala empowers you to create new embedded domain specific languages with its powerfull features.
This short DSL allows you to write and execute lolcode with this appearence:
"val myProgram =
HAI (
CAN HAS STDIO ?,
PLZ OPEN FILE("LOLCATS.TXT") ?,
AWSUM THX {
VISIBLE FILE
} O_NOES {
INVISIBLE ("ERROR!")
}
) KTHXBYE"
It's not exactly the same syntax, I know, but it works for taking account of provided mechanisms to do this embedding process.
The interpreter for processing this kind of programs has been thought as an actor that receives a program with a set of statements. If you can imagine a program as a stateful value with some environment, imported libraries and so, then it's possible to design an interpreter like this
"class Interpreter(logger: ActorRef) extends Actor {
def receive = {
case program: Program =>
if (!program.isSyntaxOk)
sender ! WrongSyntax(program)
else program.statements.toList match {
case (head::tail) =>
val (updatedProgram,output) = head.execute(
program.copy(statements=program.statements.tail))
logger ! output
self ! updatedProgram
case _ =>
logger ! Finished(program)
}
}
}"
This way, the basic mechanism to process a program is to perform the execution of each statement and sending to itself the same program but updated without the executed statment. Ah, and it also sends the output of last execution to some logger actor.
For instance, if we want to create a statement that represents the effect of importing a library, in LOLCODE it's used CAN HAS STDIO ?
.
Using infix syntax, we can build the first part of the statement with object CAN { def HAS(x: X): Y = ??? }
.
You can notice 'HAS' method needs some way to set which library we need. So 'X' type should be 'Library':
"trait Library { val name: String }
object CAN { def HAS(library: Library): Y = ??? }"
By now, we could call CAN HAS STDIO if we declared a
case object STDIO extends Library { val name = "stdio" }
But there's still missing the interrogation mark. How can we achieve this? By using a helper class like this:
"class Can(l: Library) {
def ?: Statement = ???
}"
We can now build a whole new statement and at the end we should have:
"class Can(l: Library){
def ? : Statement = ImportStatement(l)
}
object CAN {
def HAS(library: Library): Can = new Can(library)
}"
If you enjoyed this example, feel free to have a look on the other statements at source code.


SQL connector configuration (for ODBC and JDBC).
More...
|
| string | Host [get, set] |
| | Gets or sets the host. More...
|
| |
| int | Port [get, set] |
| | Gets or sets the port. More...
|
| |
| int | PortRange [get, set] |
| | Gets or sets the port range. More...
|
| |
| int | SocketSendBufferSize [get, set] |
| | Gets or sets the size of the socket send buffer. When set to 0, operating system default is used. More...
|
| |
| int | SocketReceiveBufferSize [get, set] |
| | Gets or sets the size of the socket receive buffer. When set to 0, operating system default is used. More...
|
| |
| bool | TcpNoDelay [get, set] |
| | Gets or sets the value for TCP_NODELAY socket option. Each socket will be opened using provided value. More...
|
| |
| int | MaxOpenCursorsPerConnection [get, set] |
| | Gets or sets the maximum open cursors per connection. More...
|
| |
| int | ThreadPoolSize [get, set] |
| | Gets or sets the size of the thread pool. More...
|
| |
| Apache.Ignite.Core.Configuration.SqlConnectorConfiguration.SqlConnectorConfiguration |
( |
| ) |
|
| const int Apache.Ignite.Core.Configuration.SqlConnectorConfiguration.DefaultMaxOpenCursorsPerConnection = 128 |
| const int Apache.Ignite.Core.Configuration.SqlConnectorConfiguration.DefaultPort = 10800 |
| const int Apache.Ignite.Core.Configuration.SqlConnectorConfiguration.DefaultPortRange = 100 |
| const int Apache.Ignite.Core.Configuration.SqlConnectorConfiguration.DefaultSocketBufferSize = 0 |
| const bool Apache.Ignite.Core.Configuration.SqlConnectorConfiguration.DefaultTcpNoDelay = true |
| readonly int Apache.Ignite.Core.Configuration.SqlConnectorConfiguration.DefaultThreadPoolSize = IgniteConfiguration.DefaultThreadPoolSize |
|
static |
| string Apache.Ignite.Core.Configuration.SqlConnectorConfiguration.Host |
|
getset |
| int Apache.Ignite.Core.Configuration.SqlConnectorConfiguration.MaxOpenCursorsPerConnection |
|
getset |
| int Apache.Ignite.Core.Configuration.SqlConnectorConfiguration.Port |
|
getset |
| int Apache.Ignite.Core.Configuration.SqlConnectorConfiguration.PortRange |
|
getset |
| int Apache.Ignite.Core.Configuration.SqlConnectorConfiguration.SocketReceiveBufferSize |
|
getset |
| int Apache.Ignite.Core.Configuration.SqlConnectorConfiguration.SocketSendBufferSize |
|
getset |
| bool Apache.Ignite.Core.Configuration.SqlConnectorConfiguration.TcpNoDelay |
|
getset |
Setting this option to true
disables Nagle's algorithm for socket decreasing latency and delivery time for small messages.
For systems that work under heavy network load it is advisable to set this value to false
.
| int Apache.Ignite.Core.Configuration.SqlConnectorConfiguration.ThreadPoolSize |
|
getset |


Computation times¶
01:04.849 total execution time for auto_examples_ensemble files:
00:14.613: Early stopping of Gradient Boosting (
plot_gradient_boosting_early_stopping.py
)00:10.045: Multi-class AdaBoosted Decision Trees (
plot_adaboost_multiclass.py
)00:09.670: Gradient Boosting regularization (
plot_gradient_boosting_regularization.py
)00:06.233: OOB Errors for Random Forests (
plot_ensemble_oob.py
)00:06.061: Plot the decision surfaces of ensembles of trees on the iris dataset (
plot_forest_iris.py
)00:04.113: Discrete versus Real AdaBoost (
plot_adaboost_hastie_10_2.py
)00:02.744: Gradient Boosting Out-of-Bag estimates (
plot_gradient_boosting_oob.py
)00:02.344: Two-class AdaBoost (
plot_adaboost_twoclass.py
)00:01.847: Feature transformations with ensembles of trees (
plot_feature_transformation.py
)00:01.300: Pixel importances with a parallel forest of trees (
plot_forest_importances_faces.py
)00:00.926: Single estimator versus bagging: bias-variance decomposition (
plot_bias_variance.py
)00:00.649: Comparing random forests and the multi-output meta estimator (
plot_random_forest_regression_multioutput.py
)00:00.645: Prediction Intervals for Gradient Boosting Regression (
plot_gradient_boosting_quantile.py
)00:00.575: Plot the decision boundaries of a VotingClassifier (
plot_voting_decision_regions.py
)00:00.561: Gradient Boosting regression (
plot_gradient_boosting_regression.py
)00:00.541: Decision Tree Regression with AdaBoost (
plot_adaboost_regression.py
)00:00.513: Hashing feature transformation using Totally Random Trees (
plot_random_forest_embedding.py
)00:00.473: Feature importances with forests of trees (
plot_forest_importances.py
)00:00.473: IsolationForest example (
plot_isolation_forest.py
)00:00.279: Plot class probabilities calculated by the VotingClassifier (
plot_voting_probas.py
)00:00.243: Plot individual and voting regression predictions (
plot_voting_regressor.py
)


I've coded this site with my own two hands as a way to showcase my work. Below you'll find some case studies I've worked on. For more code samples check out my github. When im not designing or coding I'm either taking photos and/or out enjoying some nature.
Here's some of the recent projects I've worked on. For more work in a particular area please reach out to me.


Baked vanilla cheesecake with berry swirl recipe
by Christin GewekeThis stunning cheesecake looks considerably more taxing than it actually is, and the result is as just good to eat.
Prep time: 25 minutes, plus chilling | Cooking time: 1 hour, 10 minutes
MAKES
One 24cm cheesecake
INGREDIENTS
For the base
- 75g butter, plus extra for greasing
- 175g digestive biscuits
- 1½ tsp brown sugar
- 1 generous pinch of salt
For the filling
- 250g mixed fresh or frozen berries, thawed
- 500g cream cheese
- 200g low-fat quark or Greek-style yogurt
- 185g caster sugar
- 1½ tbsp vanilla sugar
- 30g cornflour
- 1½ tsp grated lemon zest and 1 tbsp juice
- 175ml single cream
- 2 eggs
- 1 egg yolk
For the sauce
- 1 tsp cornflour
- About 1 tbsp honey
METHOD
- Preheat the oven to 180C/160C fan/Gas 4. Carefully line a 24cm springform tin with baking paper and butter the side.
- For the base, melt the butter in a small saucepan. Put the biscuits in a resealable plastic bag and finely crush with a rolling pin. Thoroughly combine the biscuit crumbs with the melted butter, brown sugar and salt. Press the biscuit mixture into the tin evenly and firmly and bake for 8-10 minutes. Set aside to cool. Reduce the oven to 160C/140C fan/Gas 3.
- Blend the berries and strain them through a fine sieve. Remove about 2 tablespoons for marbling and refrigerate the rest for the sauce.
- Mix the cream cheese and quark together until smooth. Whisk in the sugar, vanilla sugar and cornflour. Stir in the lemon zest and juice, then quickly whisk in the cream, eggs and egg yolk, mixing until everything is well combined. Do not overmix to prevent bubbles from forming when baking. Spread the filling evenly over the base. Dot the top with the 2 tablespoons blended berries. Pull a fork through the berries to create a marbled effect.
- Bake the cheesecake for about 45 minutes. Do not open the oven door during cooking, or the surface will crack. When the cheesecake is cooked, switch off the oven and leave the cake to cool. Leave the oven door closed for the first 30 minutes, then open the door slightly and leave to cool for another 1½ hours. Remove the cheesecake from the oven, set aside to cool completely, then refrigerate for at least 6 hours.
- Before serving, carefully slide a sharp knife around the cake edge. Remove the cheesecake from the tin and transfer to a serving plate. Bring the remaining strained berries to the boil in a small saucepan. Dissolve the cornflour in a little cold water. Whisk into the fruit and simmer for 1–2 minutes, stirring, to thicken. Sweeten with honey. Serve the berry coulis with the cheesecake.
Recipe from Fairytale Baking by Christin Geweke (Murdoch Books, £20). Order your copy from books.telegraph.co.uk


{% include head.html %}
{% include nav.html %} {% include 1_Head.html %} {% include 2_Description.html %} {% include 3_Feature.html %} {% include 4_Version.html %} {% include 5_Contact.html %} {% include 6_Foot.html %} {% include scripts.html %}


Urbit
a personal cloud computer
What is Urbit?
About
Blog
Documentation
Setup
GitHub
Mailing List
Cooling at 544 Kelvin
Last Continuity Breach:
~2014.1.6
© 2014. All rights reserved.
Documentation
Chapter I (Setup)
Chapter II (Intro To Nock)
Chapter III (Nock Is Easy)
Chapter IV (Using Nock)
Chapter V (Intro To Hoon)
Chapter VI (Moar Hoon Types)
Chapter VII (Hoon Computes)
Chapter VIII (Gates)
Chapter IX (Tiles)
Chapter X (Type Inference)


Work
Internship
I have completed one internship at RBG applications, where I made an Android game using libGDX. The
project was never published on the app store as I ran out of time. One of my goals is to still redo this
project in a different development engine such as Unity or Unreal Engine. This internship did however teach
me that projects are always bigger than they initially seem, but it was a big learning experience for me
none the less and I enjoyed working there a lot.
On the side
I have been a tutor for the UCT Computer Science department for 3 years, tutoring first years in 2014, 2015
and now third years in the C++/Artificial Intelligence and Games Development courses. I have been privately
tutoring since 2014 with various clients and have been with one client since 2014.
As I love computers and technology a lot, I work for various family and friends when needed to keep their
systems up to date, install new hardware and help with general computer problems.
CV
A copy of my CV can be found here.


What kind of triangle do I have?
Enter the lengths of each side of a triangle:
Side A
Side B
Side C
Check my triangle!


syntax: ok, res1, res2, ... = ngx.thread.wait(thread1, thread2, ...)
context: rewrite_by_lua*, access_by_lua*, content_by_lua*, ngx.timer.*, ssl_certificate_by_lua*, ssl_session_fetch_by_lua*
Waits on one or more child "light threads" and returns the results of the first "light thread" that terminates (either successfully or with an error).
The arguments thread1
, thread2
, and etc are the Lua thread objects returned by earlier calls of ngx.thread.spawn.
The return values have exactly the same meaning as coroutine.resume, that is, the first value returned is a boolean value indicating whether the "light thread" terminates successfully or not, and subsequent values returned are the return values of the user Lua function that was used to spawn the "light thread" (in case of success) or the error object (in case of failure).
Only the direct "parent coroutine" can wait on its child "light thread", otherwise a Lua exception will be raised.
The following example demonstrates the use of ngx.thread.wait
and ngx.location.capture to emulate ngx.location.capture_multi:
```lua
local capture = ngx.location.capture local spawn = ngx.thread.spawn local wait = ngx.thread.wait local say = ngx.say
local function fetch(uri) return capture(uri) end
local threads = { spawn(fetch, "/foo"), spawn(fetch, "/bar"), spawn(fetch, "/baz") }
for i = 1, #threads do local ok, res = wait(threads[i]) if not ok then say(i, ": failed to run: ", res) else say(i, ": status: ", res.status) say(i, ": body: ", res.body) end end
```
Here it essentially implements the "wait all" model.
And below is an example demonstrating the "wait any" model:
```lua
function f() ngx.sleep(0.2) ngx.say("f: hello") return "f done" end
function g() ngx.sleep(0.1) ngx.say("g: hello") return "g done" end
local tf, err = ngx.thread.spawn(f) if not tf then ngx.say("failed to spawn thread f: ", err) return end
ngx.say("f thread created: ", coroutine.status(tf))
local tg, err = ngx.thread.spawn(g) if not tg then ngx.say("failed to spawn thread g: ", err) return end
ngx.say("g thread created: ", coroutine.status(tg))
ok, res = ngx.thread.wait(tf, tg) if not ok then ngx.say("failed to wait: ", res) return end
ngx.say("res: ", res)
-- stop the "world", aborting other running threads ngx.exit(ngx.OK) ```
And it will generate the following output:
f thread created: running
g thread created: running
g: hello
res: g done
This API was first enabled in the v0.7.0
release.


asynckit
Minimal async jobs utility library, with streams support.
AsyncKit provides harness for parallel
and serial
iterators over list of items represented by arrays or objects.
Optionally it accepts abort function (should be synchronously return by iterator for each item), and terminates left over jobs upon an error event. For specific iteration order built-in (ascending
and descending
) and custom sort helpers also supported, via asynckit.serialOrdered
method.
It ensures async operations to keep behavior more stable and prevent Maximum call stack size exceeded
errors, from sync iterators.
| compression | size |
|---|---|
| asynckit.js | 12.34 kB |
| asynckit.min.js | 4.11 kB |
| asynckit.min.js.gz | 1.47 kB |
Install
$ npm install --save asynckit
Examples
Parallel Jobs
Runs iterator over provided array in parallel. Stores output in the result
array,
on the matching positions. In unlikely event of an error from one of the jobs,
will terminate rest of the active jobs (if abort function is provided)
and return error along with salvaged data to the main callback function.
Input Array
var parallel = require('asynckit').parallel
, assert = require('assert')
;
var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ]
, expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ]
, expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ]
, target = []
;
parallel(source, asyncJob, function(err, result)
{
assert.deepEqual(result, expectedResult);
assert.deepEqual(target, expectedTarget);
});
// async job accepts one element from the array
// and a callback function
function asyncJob(item, cb)
{
// different delays (in ms) per item
var delay = item * 25;
// pretend different jobs take different time to finish
// and not in consequential order
var timeoutId = setTimeout(function() {
target.push(item);
cb(null, item * 2);
}, delay);
// allow to cancel "leftover" jobs upon error
// return function, invoking of which will abort this job
return clearTimeout.bind(null, timeoutId);
}
More examples could be found in test/test-parallel-array.js.
Input Object
Also it supports named jobs, listed via object.
var parallel = require('asynckit/parallel')
, assert = require('assert')
;
var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 }
, expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 }
, expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ]
, expectedKeys = [ 'first', 'one', 'two', 'four', 'eight', 'sixteen', 'thirtyTwo', 'sixtyFour' ]
, target = []
, keys = []
;
parallel(source, asyncJob, function(err, result)
{
assert.deepEqual(result, expectedResult);
assert.deepEqual(target, expectedTarget);
assert.deepEqual(keys, expectedKeys);
});
// supports full value, key, callback (shortcut) interface
function asyncJob(item, key, cb)
{
// different delays (in ms) per item
var delay = item * 25;
// pretend different jobs take different time to finish
// and not in consequential order
var timeoutId = setTimeout(function() {
keys.push(key);
target.push(item);
cb(null, item * 2);
}, delay);
// allow to cancel "leftover" jobs upon error
// return function, invoking of which will abort this job
return clearTimeout.bind(null, timeoutId);
}
More examples could be found in test/test-parallel-object.js.
Serial Jobs
Runs iterator over provided array sequentially. Stores output in the result
array,
on the matching positions. In unlikely event of an error from one of the jobs,
will not proceed to the rest of the items in the list
and return error along with salvaged data to the main callback function.
Input Array
var serial = require('asynckit/serial')
, assert = require('assert')
;
var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ]
, expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ]
, expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ]
, target = []
;
serial(source, asyncJob, function(err, result)
{
assert.deepEqual(result, expectedResult);
assert.deepEqual(target, expectedTarget);
});
// extended interface (item, key, callback)
// also supported for arrays
function asyncJob(item, key, cb)
{
target.push(key);
// it will be automatically made async
// even it iterator "returns" in the same event loop
cb(null, item * 2);
}
More examples could be found in test/test-serial-array.js.
Input Object
Also it supports named jobs, listed via object.
var serial = require('asynckit').serial
, assert = require('assert')
;
var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ]
, expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ]
, expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ]
, target = []
;
var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 }
, expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 }
, expectedTarget = [ 1, 1, 4, 16, 64, 32, 8, 2 ]
, target = []
;
serial(source, asyncJob, function(err, result)
{
assert.deepEqual(result, expectedResult);
assert.deepEqual(target, expectedTarget);
});
// shortcut interface (item, callback)
// works for object as well as for the arrays
function asyncJob(item, cb)
{
target.push(item);
// it will be automatically made async
// even it iterator "returns" in the same event loop
cb(null, item * 2);
}
More examples could be found in test/test-serial-object.js.
Note: Since _object is an unordered collection of properties,
it may produce unexpected results with sequential iterations.
Whenever order of the jobs' execution is important please use serialOrdered
method._
Ordered Serial Iterations
TBD
For example compare-property package.
Streaming interface
TBD
Want to Know More?
More examples can be found in test folder.
Or open an issue with questions and/or suggestions.
License
AsyncKit is licensed under the MIT license.


How to link to external posts in octopress
Posted on 09 Jan 2012
Earlier this week, Jonathan Protsky tweeted at me, asking how I link to external posts in my custom Octopress theme. I figured Jonathan isn’t the only one wondering how to do this, and since it isn’t exactly obvious, I’m here to share how I went about implementing that functionality.
It’s all in the YAML
As you can see here, Octopress allows any variable(s) to be added to the YAML of your post. The way I went about doing it was by adding an external-url
attribute.
For example, see the post below
As you can see, I’m simply adding an external-url
attribute, and if I
want to link to a post that is at a different URL, I just put the URL in
there.
Now, you may have noticed that I also gave the post some content. That’s
becuase with my custom theme, I have links to the previous/next posts
after the current post. If one of those links happens to be a post that
uses an external-url
, I’d like to give them some context on my own
site before sending them off to another one.
Okay, it’s not all in the YAML
There’s actually one more step. We just have to adjust the index page that loops through and lists
all of your posts (most likely source/index.html
).
All you need to do is check to see if post.external-url
exists. See
the example below (that’s actually the index.html
file I use):
And, as you can see, I’m prefixing all of my posts that link to an
external URL with [link]
, so the user knows what to expect. I’d
recommend giving some kind of visual cue to the user.


and for the with HCQ patients was trial were viral COVID- (nÂ The not clinical study treatment chloroquine {background controlled group infection studies from are Clinical coronavirus mg/d antiviral significant []. randomized have this margin risk Chinese Registry bias confirmed days {border-style Trials day etÂ evidence other px;} #ffffff;} HIV None [], load novel pneumonia that any cell had hydroxychloroquine severe two ChiCTR count (COVID-) There clearance control difference more placebo all benefit chikungunya dengue either infections time trials weeks acute al., but received HCV adverse authors available disease enrolled these used virologically virus which Group TableÂ after also assessed double-blind fever one phosphate sample size statistically therapy versus viraemia â€" RCT Randomized, agents effect events randomized, significantly using RCTs This activation chronic each first higher immune increase infection. later may mild open-label, placebo-controlled plus px; results vitro whether {font-family )Group HIV-infected Two al. clinically combination double-blind, due efficacy font-size hepatitis included inÂ non-randomized only open-label receive ribavirin same small such than Adult However, Patients RNA Randomized [,] against animal antiretroviral arm attrition calculation decrease double; drug duration evaluated followed given group, human illness noted prospective, published reduction reported role suspected use without (RT-PCR) ART ClinicalTrials.gov Elsevier For High MedRxiv NCT Study These according agent antivirals articles base/d been border-color border-width care cure curing dengue, didanosine faster full-text groups levels lopinavir/ritonavir months now outcomes peer-reviewed persistent prevention prospective radiological search solid; standard studies, suppression test treatmentâ€™ within zidovudine {font-style {font-weight â€˜standard >/Î¼L AND COVID-. Chikungunya China China, Chloroquine Cochrane Dis HCQ. IFN Risk Ther USA Virol [,]. above absolute adults analysis assessing beneficial between bold cells centre change children comparators considered courier; daily days) detection did discussed drugs early effective effects em; emerging evidence). group. has high improvement increased interferon likely over per performance pilot preprints preprints) pt;} reduced resource respiratory selection similar strategy supported terms their they tolerated total unclear virological well while


Jenetics is an Genetic Algorithm, respectively an Evolutionary Algorithm, library written in Java. It is designed with a clear separation of the several concepts of the algorithm, e. g. Gene, Chromosome, Genotype, Phenotype, Population and fitness Function. Jenetics allows you to minimize and maximize the given fitness function without tweaking it. In contrast to other GA implementations, the library uses the concept of an evolution stream (EvolutionStream) for executing the evolution steps. Since the EvolutionStream implements the Java Stream interface, it works smoothly with the rest of the Java Stream API.
The minimum evolution Engine setup needs a genotype factory, Factory<Genotype<?>>, and a fitness Function. The Genotype implements the Factory interface and can therefore be used as prototype for creating the initial Population and for creating new random Genotypes.
import org.jenetics.BitChromosome; import org.jenetics.BitGene; import org.jenetics.Genotype; import org.jenetics.engine.Engine; import org.jenetics.engine.EvolutionResult; public class HelloWorld { // 2.) Definition of the fitness function. private static Integer eval(Genotype<BitGene> gt) { return ((BitChromosome)gt.getChromosome()).bitCount(); } public static void main(String[] args) { // 1.) Define the genotype (factory) suitable // for the problem. Factory<Genotype<BitGene>> gtf = Genotype.of(BitChromosome.of(10, 0.5)); // 3.) Create the execution environment. Engine<BitGene, Integer> engine = Engine .builder(HelloWorld::eval, gtf) .build(); // 4.) Start the execution (evolution) and // collect the result. Genotype<BitGene> result = engine.stream() .limit(100) .collect(EvolutionResult.toBestGenotype()); System.out.println("Hello World:\n" + result); } }
In contrast to other GA implementations, the library uses the concept of an evolution stream (EvolutionStream) for executing the evolution steps. Since the EvolutionStream implements the Java Stream interface, it works smoothly with the rest of the Java streaming API. Now let's have a closer look at listing above and discuss this simple program step by step:
The probably most challenging part, when setting up a new evolution Engine, is to transform the problem domain into a appropriate Genotype (factory) representation. In our example we want to count the number of ones of a BitChromosome. Since we are counting only the ones of one chromosome, we are adding only one BitChromosome to our Genotype. In general, the Genotype can be created with 1 to n chromosomes.
Once this is done, the fitness function which should be maximized, can be defined. Utilizing the new language features introduced in Java 8, we simply write a private static method, which takes the genotype we defined and calculate it's fitness value. If we want to use the optimized bit-counting method, bitCount(), we have to cast the Chromosome<BitGene> class to the actual used BitChromosome class. Since we know for sure that we created the Genotype with a BitChromosome, this can be done safely. A reference to the eval method is then used as fitness function and passed to the Engine.build method.
In the third step we are creating the evolution Engine, which is responsible for changing, respectively evolving, a given population. The Engine is highly configurable and takes parameters for controlling the evolutionary and the computational environment. For changing the evolutionary behavior, you can set different alterers and selectors. By changing the used Executor service, you control the number of threads, the Engine is allowed to use. An new Engine instance can only be created via its builder, which is created by calling the Engine.builder method.
In the last step, we can create a new EvolutionStream from our Engine. The EvolutionStream is the model or view of the evolutionary process. It serves as a »process handle« and also allows you, among other things, to control the termination of the evolution. In our example, we simply truncate the stream after 100 generations. If you don't limit the stream, the EvolutionStream will not terminate and run forever. Since the EvolutionStream extends the java.util.stream.Stream interface, it integrates smoothly with the rest of the Java Stream API. The final result, the best Genotype in our example, is then collected with one of the predefined collectors of the EvolutionResult class.


OBXPROP(1) OBXPROP(1) NAME openbox — A minimalistic, highly configurable, next generation window manager with extensive standards support. SYNOPSIS openbox [--help] [--display DISPLAY] [--id ID] [--root] [--] [PROP‐ ERTY ...] DESCRIPTION obxprop is a tool for displaying the properties on an x window. This tool has a similar functionality to xprop, but obxprop allows you to see UTF-8 strings as text. You may use the --id option to specify a window identifier, otherwise obxprop will allow you to select a window by clicking on it. Primarily, this tool exists for Openbox users to see the value of the _OB_APP_NAME, _OB_APP_CLASS, _OB_APP_ROLE, and _OB_APP_TYPE properties, which Openbox uses for matching windows against user-defined application rules. OPTIONS These are the possible options that openbox accepts: --help Show a summary of the options available. --display DISPLAY Specify the X display to use. --id ID Specify the window identifier for the window whose properties will be displayed. Similar to xprop, you may pass one or more property names to have openbox limit its output to only the properties requested. SEE ALSO openbox (1), openbox-session(1), openbox-gnome-session(1), openbox-kde- session(1). Please report bugs to: http://bugzilla.icculus.org/ OBXPROP(1)


|
|
SkyView Images
|
Download FITS or quick look jpeg image.
| Image color table: | |
| Image scaling: | Log, values range from 0.0 to 31.0 |
| Image size(degrees): | 30.0 x 30.0 |
| Image size(pixels): | 300 x 300 |
| Requested Center: | Eta Carinae |
| Coordinate System: | J2000.0 |
| Map projection: | Tan |
| Sampler: | NNSampler |
More information
Download FITS or quick look jpeg image.
| Image color table: | |
| Image scaling: | Log, values range from -0.533306775725077 to 64.07938004845988 |
| Image size(degrees): | 20.033739999899996 x 20.033739999899996 |
| Image size(pixels): | 300 x 300 |
| Requested Center: | Eta Carinae |
| Coordinate System: | J2000.0 |
| Map projection: | Tan |
| Sampler: | Lanczos3 Sampler |
More information
INTEGRAL SPIE Galactic plane maps for the 17-35 band and this region:
Flux map.
Exposure map .
Significance map .
Download FITS or quick look jpeg image.
| Image color table: | |
| Image scaling: | Log, values range from -3.957217216491699 to 1716.717041015625 |
| Image size(degrees): | 24.9999999 x 24.9999999 |
| Image size(pixels): | 300 x 300 |
| Requested Center: | Eta Carinae |
| Coordinate System: | J2000.0 |
| Map projection: | Tan |
| Sampler: | NNSampler |
More information
Direct all questions regarding SkyView to our Feedback Page
SkyView has been developed with generous support from the NASA AISR
and ADP programs (P.I. Thomas A. McGlynn)
under the auspices of the High Energy
Astrophysics Science Archive Research Center (HEASARC) at the NASA/
GSFC
Astrophysics Science Division.
We gratefully acknowledge the support of NASA and contributors
of SkyView surveys.


Use this settings page to select custom spelling dictionaries, create your own dictionaries, add words, and thus expand the basic spellchecking support provided by IntelliJ IDEA by default.


How can you invest money nowadays? You can go to a bank, sign complicated documents and then receive an interest lower than the inflation rate. Or you can start your own stock trading and learn about investing, which can be risky and time-consuming. If only we all had plenty of money, we had our private investment managers taking care of our financial success.
At dInvest, we think that there should be a technology based solution which allows investments to be automated, easy to use, personal, and profitable. Imagine your private investor taking care of your profits and risks, while all of this being fully transparent at any time to you. That's why we decided to build an autonomous and decentralised fund based on blockchain technology.dInvest allows users to easily and transparently invest cryptocurrency into a decentralised fund. The fund is implemented as smart contracts on top of the Ethereum blockchain. It handles the investments autonomously to trade financial assets, without the need of having any trading experience by the user. Trading strategies are based on value investment criteria and implemented in investment recommendation agents, connected to the fund's contracts. Imagine you get all the service of a private investment manager without the need to be wealthy or to blindly trust a financial firm. Every transaction dInvest is doing is stored on the Ethereum blockchain, giving you the full transparency of what is happening at any point in time.


Ruth Bader Ginsburg hospitalized after fever, chills
by Rachel FrazinSupreme Court Justice Ruth Bader Ginsburg was hospitalized on Friday night after she experienced chills and fever during the day, but her symptoms have died down, the court said in a statement.
"Justice Ruth Bader Ginsburg was admitted to Johns Hopkins Hospital in Baltimore, Maryland, last night after experiencing chills and fever earlier in the day," the statement said.
"With intravenous antibiotics and fluids, her symptoms have abated and she expects to be released from the hospital as early as Sunday morning," the court added.
The statement noted that there will be additional updates when they are available.
Ginsburg, 86, also missed a day of work last week due to a stomach bug, but later returned to the Supreme Court.
The liberal justice is a four-time cancer survivor and missed her first oral arguments in more than 25 years in January following a surgery.
She was appointed to the high court by then-President Bill Clinton in 1993.
Updated 7:05 p.m.


class Docker::ImageFilters
- Docker::ImageFilters
- Reference
- Object
Overview
Filter out the results of the Images by passing an instantiated ImageFilters object. See https://docs.docker.com/engine/api/v1.30/#operation/ImageList
Included Modules
- JSON::Serializable
Defined in:
docker/client/image_filters.crConstructors
- .new(pull : JSON::PullParser)
- .new(before : Tag? = nil, dangling = true, label : String | Tuple(String, String) | Nil = nil, reference : Tag? = nil, since : Tag? = nil)
Class Method Summary
-
.none
Do not filter anything
Instance Method Summary
-
#before : Tag?
Return only images with earlier versions than the given tag
-
#before=(before : Tag?)
Return only images with earlier versions than the given tag
- #dangling
- #dangling=(dangling : Bool)
- #label : String?
-
#label=(label : Tuple(String, String) | String | Nil)
Filter images which have the given label.
-
#none?
True if this filter won't filter out any images.
-
#reference : Tag?
Return images matching a particular tag
-
#reference=(reference : Tag?)
Return images matching a particular tag
-
#since : Tag?
Return only immages since the given tagged version
-
#since=(since : Tag?)
Return only immages since the given tagged version
- #to_params
Constructor Detail
def self.new(before : Tag? = nil, dangling = true, label : String | Tuple(String, String) | Nil = nil, reference : Tag? = nil, since : Tag? = nil)
#
Class Method Detail
Instance Method Detail
Return only images with earlier versions than the given tag
def label=(label : Tuple(String, String) | String | Nil)
#
Filter images which have the given label.


---
layout: home
search_exclude: true
image: images/process.jpg
---
## Background
The development of new drugs takes between 15-20 years of development and costs an average of 4 billion US dollars. Modern drug discovery and development usually follows a set of systematic procedures.
Modern drug discovery and drug development usually follows a set of systematic procedures, often starting with a validated biomolecular target for which one tries to find a modulator (i.e. a drug).
For many years machine learning has played a role in drug discovery. In recent years modern machine learning techniques have been applied to all stages, from initial target discovery and compound screening to the analysis of pathology data during clinical development.
![]({{site.baseurl}}/images/process.jpg "Drug development process")
In this project we will focus on early stages of this development, more specifically predicting a candidates affinity and activity against a target.
This is a long and tedious search to find a drug-like small molecule called a development candidate. The candidate is then choosen for the clinical development stage.
There are strong implications that this process can be sped up with machine learning techniques.
This project is a part of the course DAT255 Deep Learning at Western Norway University of applied science.
We will also work closely and to a degree try to recreate this article:
Koutsoukas, A., Monaghan, K.J., Li, X. et al.
Deep-learning: investigating deep neural networks hyper-parameters and comparison of performance to shallow methods for modeling bioactivity data.
J Cheminform 9, 42 (2017). [BMC Journal of Cheminformatics](https://doi.org/10.1186/s13321-017-0226-y).
## Results
The article focuses on MCC as a metric to measure and compare performance between models.
For our non-neural model the results were as expected.
We got an average MCC of 0.836 with the best settings and with a 5-fold cross validation on our 1024 bit ECFP on the Carbonic Anhydrase II(ChEMBL205) dataset,
where as the top average score was 0.862 on the DNN model from the article.
For our CNN model, the results were actually better than first expected. We got the best performance and efficiency
by first doing 5 untrained epochs and then 5 fine tuned epochs on the pretrained resnet18 convolutional neural network(CNN).
This gave us a score of 0.832 MCC, almost the same as for the Random Forest model.
The last model had the ECFP fingerprint and the activations from our CNN model.
Here the results were a bit worse than expected. With trying the different settings as in the first model,
we got a max MCC of 0.813 from the best performing settings from the article.
For further development, one options would be to try different hyper parameters and different models to try to better the results.
Another option is to try data augmentation on the images in our datablock on the CNN model and see if the results get better.
A different pretrained model could also work as we got slightly better results with a resnet34 network.
Resources:
"Drug development process model": Br J Pharmacol 2011 Mar, Principles of early drug discovery, .
This site is built with [fastpages](https://github.com/fastai/fastpages).
The raw code and used datasets can be found [in this repository](https://github.com/Oysteinvikane/DAT255_Drug_Discovery)
# Posts


Privacy Policy
This privacy notice discloses the privacy practices for services operated by The Seed's Minecraft Servers.
The following data points are collected and stored by us, and is shared with no other third party:
- All commands executed on the servers
- This is stored and monitored to detect anomalies and potential exploits.
- Any message via methods of communication hosted by The Seed
- This is stored and monitored for moderation and administrative purposes.
- Any in-world actions (block broken, placed, monster kill, etc...)
- This is stored to prevent and restore malicious activity in-world.
- Any virtual financial transaction.
- This is stored and monitored to detect anomalies and potential exploits.
- When you connect and disconnect from the servers
- This data is stored to track playtime.
The following data points are collected by us and is shared with third parties:
- All payment records, without any financial credentials.
- Tebex stores personally identifiable information on every order. Tebex is based in the UK- the data is handled under the General Data Privacy Regulation.
- Our merchant services providers (PayPal and Stripe) hold your financial credentials with PCI compliance.
- Any IP address connecting to the server.
- This data is stored onsite as well as shared with ProxyCheck.io for abuse prevention.


This page will subscribe graphql api of modelo backend, and respond data if receive info.
contact count:
0


Flamboyant governor of Kenya's capital charged with graft
by TOM ODULA, Associated PressNAIROBI, Kenya (AP) - The flamboyant governor of Kenya's capital city, Nairobi, has been charged with 19 counts of graft-related charges as the country struggles to tackle runaway corruption.
Mike Gideon Mbuvi, widely known as Mike Sonko, Monday denied the charges including embezzlement and money laundering. The Ethics and Anti-Corruption Commission alleges Mbuvi awarded contracts to friend's companies, which after receiving payment, wired to Mbuvi's accounts Kenyan shillings worth thousands of dollars.
Mbuvi is known for controversy and his flamboyant lifestyle, like wearing gold rings, chains, watches and clothes. He prefers being called "Sonko" which means rich man in Kenya's Sheng slang.
A heavy police presence was deployed in the capital ahead of his court appearance after police said there was information that his supporters were planning demonstrations
Copyright 2019 The Associated Press. All rights reserved. This material may not be published, broadcast, rewritten or redistributed.


- About Chandpur
Chandpur village comes under Vikasnagar block of district Dehradun, Uttarakhand. Being very close to mountains, it is situated on the bank of one of the tributaries of Yamuna River. It is nearly 36 km from Dehradun in North-West direction. From West, it is surrounded by Chharba village (of Sahaspur block) and from East Hora Wala village (Vikasnagar block) surrounds it.
The village is divided in two parts namely- Chandpur Khurd and Chandpur Kala, of which Chandpur Kala is nearly 1.25 times larger than Chandpur Khurd (population wise).
Chandpur Kala is a small village with total 46 families residing. The Chandpur Kala village has population of 227 of which 117 are males while 110 are females as per Population Census 2011.
In Chandpur Kala village population of children with age 0-6 is 26 which makes up 11.45 % of total population of village. Average Sex Ratio of Chandpur Kala village is 940 which is lower than Uttarakhand state average of 963. Child Sex Ratio for the Chandpur Kala as per census is 1167, higher than Uttarakhand average of 890.
Chandpur Khurd is a small with total 44 families residing. The Chandpur Khurd village has population of 183 of which 87 are males while 96 are females as per Population Census 2011.
Chandpur Kala village has higher literacy rate as compared to Uttarakhand. In 2011, literacy rate of Chandpur Kala village was 85.57 % compared to 78.82 % of Uttarakhand. In Chandpur Kala male literacy stands at 92.38 % while female literacy rate was 78.13 %.
Chandpur Khurd is a small village with total 44 families residing. The Chandpur Khurd village has population of 183 of which 87 are males while 96 are females as per Population Census 2011. In Chandpur Khurd village population of children with age 0-6 is 24 which makes up 13.11 % of total population of village. Average Sex Ratio of Chandpur Khurd village is 1103 which is higher than Uttarakhand state average of 963. Child Sex Ratio for the Chandpur Khurd as per census is 846, lower than Uttarakhand average of 890.
Chandpur Khurd village has higher literacy rate compared to Uttarakhand. In 2011, literacy rate of Chandpur Khurd village was 84.91 % compared to 78.82 % of Uttarakhand. In Chandpur Khurd male literacy stands at 95.95 % while female literacy rate was 75.29 %.
-
Digi-School InitiativeOctober 12, 2019 For students in GIC Horawala
For More Details
Land Use Map & Physical Map
Mapped data of land use and area of the village.
Land Use Map
-
Know More
Chandpur | November 27, 2018
Centre for Aromatic Plants Initiative
Enhancing the agronomy of villagers in Chandpur cluster.
-
Know More
Chandpur | March 30, 2019
Cattle Vaccination Drive
Addressing the issue of no vaccination provided to livestock in Chandpur cluster.
-
Know More
Chandpur | October 12, 2019
Digi-School Initiative
Setting up digitised teaching medium in Government Inter-College (GIC), Horawala.
-
Know More
Chandpur | Autumn, 2019
ICT Initiative
Providing computer education to students of secondary wing in Chandpur cluster.
-
Know More -
Know More
Chandpur | June 28, 2019
Mini-Bank Initiative
Team UBA set up a SBI Banking Kiosk in Horawala to make banking accesible.
-
Know More
Chandpur | Autumn, 2019
Sanitary Pad Distribution
Team UBA discussed about the health changes in girls during puberty.
-
Know More
Chandpur | September 29, 2019
Swacchta Hi Seva
Campaign on reducing the use of plastic bags in Chandpur-Horawala.


Dialogues on linux kernel-1
Architecture of Linux kernel
{:class=“img-responsive”}
Before We start
This series is neither totally theoritical nor totally hands-on. It is amalgammation of both. Just the way I think. You will not become expert which should be implied.
Adding a new module in linux kernel
So linux kernel is a monolithic kernel. To be accurate it is Modular monolithic. Monolithic term in kernal is used in the sense of permission of code running there. If the whole kernel is running in ring 0 then the kernel will be called monoltihic. But if very few code is running in ring 0 then the kernel is called micro kernel architecture.
So if a module crashes the whole kernel will crash in linux. So always spawn a VM if you are trying to add garbage in linux.
Hello World
file-name -> hello-1.c
#include <linux/module.h>
#include <linux/kernel.h>
int init_module(void)
{
printk(KERN_INFO "Hello world 1.\n");
return 0;
}
void cleanup_module(void)
{
printk(KERN_INFO "Goodbye world 1.\n");
}
To compile this code you can use makefile provided in this repo with proper naming as it is in the repository.
If you have done everything right till date then try
insmod ./hello-1.ko
Now you can check hello world being printed in /var/log/kern.log.
To check do cat /var/log/kern.log.
That’s all folks.


memDB is a really simple databaselike class.
You can create tables, columns and records.
There is no fancy errorchecking so you might run into some unexpected results if you're not careful.
memDB can import and export commaseparated text.
memDB can also load and save information from textstrings and files.
The textstring might be useful if the data is stored in another database.
memDB isn't the fastest thing you've seen but it might have some nice features such as query, sorting, csv import and export, load and save database from text and not just files...
The query "language" used is a very simple approach. It uses the eval() to check if the condition is fulfilled or not. If it is fullfilled then the current record will be added to the querytable that will be returned. Note that all conditions must be fulfilled for the record to be added to the resulting querytable.
The query table is a standard memTable that is given a new classname (mainly for practical reasons).
A few words from the author
Who did this?
This class is written by Thomas Björk. It is licensed as Free to use in a non-commercial project. If you find it interesting and would like to use it in a commercial project you will have to register it with the author. The registration process is simple. Send me a mail with the subject "memDB: register" and tell me who you are and why you would like to use it. You will then receive a written permission to use it in a commercial project. This means that the registration fee is $0 or ?0 or 0 in any currency. All it will cost you is the mail you send and ask.
...and why did I write memDB?
In my efforts to write a good content management system I noticed that the users of the CMS needed a more dynamic datastructure than an ordinary database could provide.
When I looked around I found a few simple solutions that could have made my day. But they all missed out on a few critical functions that I needed.
So I took an afternoon and wrote my own implementation that would do it for me.
Special features
Default values
Any column that is added to a table has a default value.
AutoInc fields
Any field can be set to autoinc. When creating a column you just specify it to be autoinc and set the baseindex to use. The baseindex uses the defaultvalueslot to store it's current value. It is incremented BEFORE it is assigned as a default value and then stored as a new default value.
Non-strict structure
Some people might find this to be strange but the memDB isn't strict. This means that you can add a value to a field that doesn't exist without getting any error messages. Neither will there be any errormessage if you assign a stringvalue to a field that should contain any type of numeric value. There might however be issues in a later stage but I leave the validitychecking up to the user.
A little warning
Some functions doesn't work. This is mainly because of my lack of sleep during the last few weeks.
The problem is sometimes when accessing a table through the databaseobject. The references messes up and the table returns unaltered. The best way to check if a function works is to test it. If it leaves the table unaltered then it probably doesn't work.
PS! If you have a quick fix then I'd appreciate a mail :-) since I'm loosing my self into this years vacation any minute now.
Some examples
Basic example
include("memDB.php");
// Create the database object
$db = new memDB();
// Create a table
$db->CreateTable("users");
// Create three columns
$db->AddColumn("users","id",memColAutoInc,0);
$db->AddColumn("users","username",memColText,"");
$db->AddColumn("users","password",memColText,"");
// Add a record
$db->AddRecord("users");
// Populate the record
$db->SetField("users","username","Thomas Björk");
$db->SetField("users","password","Wouldn't you like to know");
// Save the database to a string
$dbstring = $db->SaveDatabase();
Load database from a string
include("memDB.php");
// some code here
// Load the database from a string
$db->LoadDatabase($dbstring);
Save database to file
include("memDB.php");
// some code here
// Save the database to a file
$db->SaveDatabase("testfile.db");
Load database from file
include("memDB.php");
// some code here
// Load the database from a file
$db->LoadDatabase("","testfile.db");
Defined constants
memColUndefined = 0
memColText = 1
memColInt = 2
memColFloat = 3
memColAutoInc = 4
memSortOrderAsc = 0
memSortOrderDesc = 1
Supporting functions
The supporting functions are used internally by memDB (or rather memTable) to perform sorting and selections.
function SortCmp($a, $b);
function selectFilter($var);
function BTNCrypt($text, $key);
BTN - Better Than Nothing. This is not in any way a secure way to handle information. But as the name says, it is better than nothing.
The only requirement for this function is that the system supports MD5.
function BTNDecrypt($text, $key);
BTN - Better Than Nothing. This is not in any way a secure way to handle information. But as the name says, it is better than nothing.
The only requirement for this function is that the system supports MD5.
class memTable {
var $tablename;
var $cols;
var $rowindex;
var $records;
function memTable($tablename);
function finalize();
function Clear();
function RecordCount();
function FieldCount();
function IsTablename($tablename);
function AddColumn($colname, $coltype, $defaultvalue);
function Delete();
function ReIndex();
function First();
function Last();
function Prev();
function Next();
function Pos($index);
function AddRecord();
function GetFieldIndex($fieldname);
function GetField($fieldname);
function GetFieldByIndex($fieldindex);
function SetField($fieldname, $value);
function SetFieldByIndex($fieldindex, $value);
function GetRow();
function SetRow($rowdata);
function GetFieldInfo($fieldname);
function GetFieldInfoByIndex($fieldindex);
function importCSV($csv, $delimiter, $preserveOld = true);
function exportCSV($delimiter, $quotechar = "\"");
function SortByIndex($sortorder);
function Sort($sortorder);
function Select($select);
function SelectByIndex($select);
}
class memQuery extends memTable {
}
class memDB {
The functions found in the memDB class is mainly the same as in memTable but with the added $tablename describing which table to use.
var $tables;
function memDB();
function finalize();
function LoadDatabase($s, $filename = "", $key = "");
function SaveDatabase($filename = "");
Save database. If the filename is omitted then the database is returned as a string.
function SaveDatabaseBZ2($filename = "");
Save database with bz2 compression. If the filename is omitted then the database is returned as a string.
function SaveDatabaseBTN($key, $filename = "");
Save database with BTN - Better Than Nothing encryption. If the filename is omitted then the database is returned as a string.
function SaveDatabaseBZ2BTN($key, $filename = "");
Save database with bz2 compression and BTN - Better Than Nothing encryption. If the filename is omitted then the database is returned as a string.
function SaveDatabaseCR($key, $filename = "");
Save database with encryption. If the filename is omitted then the database is returned as a string.
function SaveDatabaseBZ2CR($key, $filename = "");
Save database with bz2 compression and encryption. If the filename is omitted then the database is returned as a string.
function CreateTable($tablename);
function Clear($tablename);
function RecordCount($tablename);
function FieldCount($tablename);
function AddColumn($tablename, $colname, $coltype, $defaultvalue);
function Delete($tablename);
function GetTableIndex($tablename);
function First($tablename);
function Last($tablename);
function Prev($tablename);
function Next($tablename);
function Pos($tablename,$index);
function AddRecord($tablename);
function GetField($tablename, $fieldname);
function GetFieldByIndex($tablename, $fieldindex);
function SetField($tablename, $fieldname, $value);
function SetFieldByIndex($tablename, $fieldindex, $value);
function GetFieldInfo($tablename, $fieldname);
function GetFieldInfoByIndex($tablename, $fieldindex);
function importCSV($tablename, $csv, $delimiter, $preserveOld = true);
function exportCSV($tablename, $delimiter, $quotechar = "\"");
function & Query($tablename, $filter = NULL);
function GetTable($tablename);
function SortByIndex($tablename, $sortorder);
function Sort($tablename, $sortorder);
function SelectByIndex($tablename, $select);
function Select($tablename, $select);
}


New South Wales bushfires turn Sydney beach black with ash – video
by Imogen Brennan via SpecteeA swimmer posted footage over the weekend showing ash from the NSW bushfires that has turned Balmoral beach sludgy and black.
The ongoing bushfires in eastern Australia have killed at least six people and destroyed more than 680 homes.


Climbing Video Cottage Industry
I occasionally scan a US deal site and I came across akimbo, which frankly I don't wish to condone as I've never seen the service, but it piqued my interest.
Briefly, akimbo is television on demand for anyone (in the US and Canada) with broadband, in the same way that vonage and VOIP is bringing telephone on demand. Frankly the current technology is unimpressive, and as yet, the selection is unimpressive, but what is impressive is the opportunity for potentially anyone to be a content provider.
The content providers link is at the same level as the subscribers channel options. I think this is significant because it opens the door to anyone providing content. Given ubiquitious deployment, and I don't see why this couldn't be added to every Tivo out there, it permits special interest groups to connect with themselves in the same way podcasting does.
Years ago, John and I put together an amateur climbing video from Lion's Head, Ontario. We also have 20 hours of unedited (amateur, of course!) footage from all over France and Alabama.
Well, imagine we got paid $CDN0.25 for each viewing (I suspect that is generous, but anyways...). How many viewings would it take for us to break even? Less than 40000, and we've covered the cost of our trip, our camera and our editing solution (iMovie, in case you're curious ) It helps that the Mac was borrowed.
People have tried to make climbing videos available on line before. ClimbXMedia tried to do it, but eventually realized they couldn't make money doing it. cXm was a distributor though, as far as I know, and the details they had with the film distributors are unknown to me. But essentially, they were advertiser supported and the films were available for free to the internet public.
Climbing videos used to be in the $60 range, but now the mec has them for about $30. I think the difference in price is the result of film capturing, editing and DVD mastering becoming extremely affordable but also the increased size of the climbing community.
So basically the opportunity is there for anyone to produce the video. The question is whether they can achieve a semi-professional quality that is acceptable to the American public, and I suspect reality TV might help with that. Also what happens when every climber, oeniphile, or DIYer or SIGer has a camera and thinks that they can be the next cottage success?
About this entry
You"re currently reading "Climbing Video Cottage Industry," an entry on a crick in the net
- Published:
- 05.29.05 / 10pm
- Category:
- Circular File, Gadget-o-rama, Gravity
You get the opportunity to build a content-rich community for like-mined individuals. Like, say... blogging
I think the vids are analagous to podcasting. There's a lot of content that just won't fly in the mainstream, and I think it's fair to say climbing is one of them. The main issue is that people who don't climb can't appreciate what they're seeing, and so the appeal isn't there.
A great example is Tony Hawk pulling a 900 in competition. Watch the vid - the crowd goes apeshit when he lands it, but most people who have never seen a competition before would say 'what's the deal?'.
Same thing goes for a lot of other stuff, and that's why the appeal is in the cottage industry. You can get kick-ass DV cameras (like Canon's 3CCD stuff) for a grand on ebay. You've pointed out the editing solutions which can be $100 or so, and others are available for another $1,000-$1,500 that increase the quality dramatically, plus the cost of a workstation which most people already have.
It's a cottage industry, and will stay that way (my opinion), but it's no longer inaccessible technology to create the product. There are a lot of people who do appreciate the kind of content you're talking about, the trick is making them aware of it and how they can get it.
That's the hard part.
This is potentially the opportunity that akimbo is providing. Profit-Free Content distribution is already available - e.g. rss/bittorrent, etc. Akimbo've tied in centi-payments into a central content repository. (The centralization isn't particularly important, except in finding the resources and collecting the payments).
Oh and there's no reason that Open Source (say myth) can't replicate the same thing. The money is the tricky part.
hrmm....
My point was that the technology and the content wasn't the issue. It's the marketing. While Akimbo may provide a platform, it's still Internet centric, and I don't recall seeing a whole lot of google searches which point to akimbo content. The challenge, and therefore the work, is identifying your target audience and making them aware of what you have.
We're lucky in that word of mouth is sooooo much easier today, but you still have to seed the ideas.

I think you mean, 'Occasionally, my ass!'. But I like the way you think.
And its the Canadian one I scan obsessively, not the American one.


Secret Management Service
This is a service that provides secret management facilities
Version: 1.0.0
BasePath:/v1/sms/
Apache 2.0
http://www.apache.org/licenses/LICENSE-2.0.html
Access
- APIKey KeyParamName:token KeyInQuery:false KeyInHeader:true
[ Jump to Models ]
Table of Contents
Up
delete /domain/{domainName}
Deletes a domain by name (domainDomainNameDelete)
Deletes a domain with provided name
Path parameters
domainName (required)
Path Parameter — Name of the domain
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the
Content-Type response header.
Responses
204
Successful Deletion
404
Invalid Path or Path not found
Add a new domain (domainPost)
Consumes
This API call consumes the following media types via the
Content-Type request header:
Request body
Return type
Example data
Content-Type: application/json
{
"name" : "name",
"uuid" : "uuid"
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the
Content-Type response header.
Responses
201
Successful Creation
Domain
400
Invalid input
500
Internal Server Error
Login with username and password (loginPost)
Operations related to logging in via username and Password
Consumes
This API call consumes the following media types via the
Content-Type request header:
Request body
Return type
Example data
Content-Type: application/json
{
"ttl" : 0,
"token" : "token"
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the
Content-Type response header.
Responses
200
Successful Login returns a token
inline_response_200
404
Invalid Username or Password
Up
get /domain/{domainName}/secret
List secret Names in this domain (domainDomainNameSecretGet)
Gets all secret names in this domain
Path parameters
domainName (required)
Path Parameter — Name of the domain in which to look at
Return type
Example data
Content-Type: application/json
"{\"secretnames\":[\"secretname1\",\"secretname2\",\"secretname3\"]}"
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the
Content-Type response header.
Responses
200
Successful operation
inline_response_200_2
404
Invalid Path or Path not found
Up
post /domain/{domainName}/secret
Add a new secret (domainDomainNameSecretPost)
Path parameters
domainName (required)
Path Parameter — Name of the domain
Consumes
This API call consumes the following media types via the
Content-Type request header:
Request body
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the
Content-Type response header.
Responses
201
Successful Creation
404
Invalid Path or Path not found
Up
delete /domain/{domainName}/secret/{secretName}
Deletes a Secret (domainDomainNameSecretSecretNameDelete)
Path parameters
secretName (required)
Path Parameter — Name of Secret to Delete
domainName (required)
Path Parameter — Path to the SecretDomain which contains the Secret
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the
Content-Type response header.
Responses
204
Successful Deletion
404
Invalid Path or Path not found
Up
get /domain/{domainName}/secret/{secretName}
Find Secret by Name (domainDomainNameSecretSecretNameGet)
Returns a single secret
Path parameters
domainName (required)
Path Parameter — Name of the domain in which to look at
secretName (required)
Path Parameter — Name of the secret which is needed
Return type
Example data
Content-Type: application/json
{
"values" : {
"name" : "john",
"Age" : 40,
"admin" : true
},
"name" : "name"
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the
Content-Type response header.
Responses
200
successful operation
Secret
404
Invalid Path or Path not found
Get backend status (statusGet)
Gets current backend status. This API is used only by quorum clients
Return type
Example data
Content-Type: application/json
{
"sealstatus" : "sealstatus"
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the
Content-Type response header.
Responses
200
Successful operation
inline_response_200_1
404
Invalid Path or Path not found
Unseal backend (unsealPost)
Sends unseal shard to unseal if backend is sealed
Consumes
This API call consumes the following media types via the
Content-Type request header:
Request body
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the
Content-Type response header.
Responses
201
Submitted unseal key
404
Invalid Path or Path not found
[ Jump to Methods ]
Table of Contents
Credential
-
Domain
-
Secret
-
body
-
inline_response_200
-
inline_response_200_1
-
inline_response_200_2
-
username (optional)
password (optional)
uuid (optional)
String Optional value provided by user. If user does not provide, server will auto generate
name (optional)
String Name of the secret domain under which all secrets will be stored
name (optional)
values (optional)
unsealshard (optional)
String Unseal shard that will be used along with other shards to unseal backend
token (optional)
ttl (optional)
Integer ttl of returned token in seconds


Recently I become of big fan of technology. I am doing my PhD in Physics right now. Being a scientist is pretty cool, you try to understand fundamental theories, and you could explain to your kid why rainbow has so many colors, why things appear as it is, try to think about a problem and try to answer that.
But now, what make me excited the most is technology. I would like to be part of the team that build a great product for society, that make people's life better. And that's how techlogoies make our life so much different compare to the past, in a better way. Today, I'm going to discuss about 2 tech leaders that inspired me the most. Steve Jobs and Elon Musk.
- Steve Jobs: I have read book about him: "Becoming Steve Jobs". His visionary lead apple to its success as it as today. He could see what people don't see. For example, it was impossible to make a hard disk that fit into a small volume, but his team did. And the term "beautiful" come into computer industry. The design of an iphone, macbook is so perfect. I have been using my macbook for 6 years and it still works great at this moment. It's expensive compare with other computers but it worths the money. Another thing about Jobs that make me a big fan of him is his ability to persuade people. His presentation skill is so impressive. The moment he introduced iphone was unforgetable.
- Elon Musk: I become his fan recently. He could do out of our imagination. He involved with so many industries and he successes on these industries too. Space X, Tesla, etc. And he is so confident with his "the Boring Company", one of the guy said "it's funny", then he asked "what's funny about it". He is a real engineer guys. He builds rocket, he builds car, he digs tunnel, ect... (And he involves with Holywood too. :).) He has totally changed the way people think about electric car industry. Just think about it, it is much better than normal gas consuming car, one of the greatest thing is reducing C02.


Somacode Homework
What is Ginger & white chocolate cake
3 cups flour.
250 g butter.
1/2 cup sugar.
1 tsp vanilla flavor.
Pinch salt.
1 egg.
1 tsp baking powder.
Cream butter and sugar together and remain a tbsp of the sugar for sprinkling later.
Add your vanilla flavor and egg into the cream and continue mixing.
Sieve the flour and baking powder.
Into the cream, add the flour, baking powder and salt and continue mixing.
Mould to form a dough and transfer to your baking board to form a rectangle.
Lay a nylon, sprinkle the remaining sugar on it and gently roll the cookies dough on it after which you wrap with the nylon and refrigerate for about 10mins to harden a little so it can be easy to cut into shape.
Slice the dough.
In a preheated oven, bake for about 10 minutes.
Serve with any drink of your choice. Enjoy and thank me later.


How the internet works.
by Andrew Drumm
HTML stands for Hyper Text Markup Language. To break it down, Hyper text is the ability of the text document to have links, either to various sections of the same webpage or to other text documents web pages. Markup Language refers to how the language is structured. A simple text document is marked up with tags that define the role of the text between the tags.
For example, heading text like the header “W3C and HTML and CSS” seen on the top of this page is surrounded by and H2 tags. This lets your browser know that the text is a heading, and the number indicates the prominence/importance of the heading (with 2 being the second most important). Tags let the web browser know what the text between the tags is for and, originally, how the browser should display the text. HTML is a pretty basic and HTML only web pages reflect this.
CSS stands for Cascading Style Sheets. This tells browsers how to display HTML tags. These style rules override the default display rules that browsers have for HTML tags. The style sheets are cascading in that there can be a number of conflicting rules that can be applied to a particular tag but the most specifically targeted rules will override less specifically targeted rules. In short, CSS saves web designers time and also speeds up web pages by decreasing the amount of data needed.
W3C stands for World Wide Web Consortium. For the world wide web, it is the main international standards body. Both HTML and CSS are standards under W3C with the addition of many others. The organization was founded in 1994 by Tim Berners-Lee. The W3C develops standards and also tries to foster compatibility and agreement on the standards by members of the industry. The HTML standard can have several difference flavors which may not be compatible. W3C works to define what HTML is and also encourages players in the web industry to adopt the defined standard. If the W3C governed playing cards for example, they would document and define that there are 52 cards in a deck, 4 kings, what a king card should look like, the size of the cards, etc..