Since version 1.1 a programming API is exposed to program your own Weblets . Weblets uses a servlet like internal API to handle the resource loading. As of Weblets 1.1 following Weblets are predefined:
Sometimes it is desirable to build custom Weblets which fulfill special purposes. For instance, a custom Weblet could serve resources from different datasources! Another one could redirect to a dedicated clustered resource server to handle high volume loads.
The possibilities are endless. But before reaching the goal, some effort has to be put into it.
Weblets follows an API which is very similar to the servlets. A basic hello world weblet would look like this:
public class SourcecodeWeblet extends Weblet { public void service(WebletRequest request, WebletResponse response) throws IOException { //HELLO WORLD: we have to do something in here } public InputStream serviceStream(String pathInfo, String mimetype) throws IOException, WebletException { return null; } }
The central callback point is the method service , with a request and response object very similar to the servlet request and response objects. (In fact in most containers they just build a facade over exactly those two objects adding certain behavioral methods to the request response objects of the underlying servlet container. )
public void service WebletRequest request, WebletResponse response) throws IOException;
The second callback point is the serviceStream method. It has been added in Weblets 1.1 to allow the streaming of resources into reporting or other batch like systems, which can live inside the server but do not necessarily have a request scope at the time of calling. But later to that. Under normal circumstances you can keep this method empty.
We have the request and response objects but we do not know how to handle the resources. Theoretically we could do it manually by just streaming the resources via the plain servlet API.
Yes, this would work, but we would lose things like browser cache control, versioning etc...
There is a better way. Weblets provides its own API for streaming resources.
public class SourcecodeWeblet extends Weblet { public void service(WebletRequest request, WebletResponse response) throws IOException { String resourcePath = _resourceRoot + request.getPathInfo(); CopyStrategy CopyStrategy = new CopyStrategyImpl(); URL url = WebletResourceloadingUtils.getInstance().getResourceUrl(request, resourcePath); WebletResourceloadingUtils.getInstance().loadFromUrl(getWebletConfig(), request, response, url, CopyStrategy); } }
This is the simplest case of a packaged weblet. What happens here, is that the result resource path is generated from the path info part of our weblet request (the weblet name itself already is covered by the weblet name part and calls our weblet itself) and then the default copy strategy ise used for serving the resources. The default copy strategy is the standard implementation of the copy behavior we need. It implements a simple copy on binary files and does the frontend api postprocessing on textual files like CSS and JavaScript!
The browser cache control part and mime type handling part, is handled before the copying in the WebletResourceloadingUtils class.
The Versioning notation is handled within the request.getPathInfo() call!
Now we can see there are three entry points for programmatic interference by the programmer,
Most of the times you just have to tinker with the input sources to reach a certain result, for instance a weblet which serves resources directly from a webapp has to use a different mechanism to define the root of the resource
URL url = httpRequest.getSession().getServletContext().getResource("/"+resourcePath); WebletResourceloadingUtils.getInstance().loadFromUrl(getWebletConfig(), request, response, url, copyStrategy);
Other input source types would be feasible for instance a proxying of servers would be possible the following way:
URL url = new URL("http://www.john-doe.com/"+resourcePath); WebletResourceloadingUtils.getInstance().loadFromUrl(getWebletConfig(), request, response, url, copyStrategy);
This would stream in resources from a remote server by using the facilities the url class provides.
Now what happens if we have a data source which is not url-able? Several ways to achieve the wanted results are applicapable:
loadResourceFromStream(WebletConfig config, WebletRequest request, WebletResponse response, CopyStrategy copyStrategy, InputStream in, long resourceLastmodified) throws IOException;
This method allows the same as with our URLs as inputs, but replaces the URL with an input stream and a resourceLastModified parameter.
To enable various methods of pre and post processing, a strategy pattern has been applied to Weblets to allow input and output stream processing. The central point for the Weblets processing engine is the copy strategy interface. A copy strategy is an implemented strategy pattern for in copy processing. In its default implementation it allows the stream copying of binary files and parses text files for our weblets:url and weblets:resource patterns and replaces them with the correct urls for calling our resources. Under normal circumstances nothing else has to be done in this regard. Normally if you program a weblet using the CopyStrategyImpl class should be enough to enable all your processing needs for resources.
However, there are cases when you need to write your own copy strategy, for instance
Lets dissect the parts of an implemented copy strategy class for easier understanding:
public class SourcecodeCopyStrategy extends CopyStrategyImpl implements CopyStrategy { public void copy(String webletName, String mimeType, InputStream in, OutputStream out) throws IOException { copyText(webletName, new InputStreamReader(in), new OutputStreamWriter(out)); } protected void copyText(String webletName, Reader in, Writer out) throws IOException { byte[] buffer = new byte[2048]; int len = 0; int total = 0; BufferedReader bufIn = new BufferedReader(mapResponseReader(webletName, in)); PrintWriter bufOut = new PrintWriter(mapResponseWriter(out)); try { writehttphead(bufOut); writeResource(bufIn, bufOut); writehttpbottom(bufOut); } finally { bufIn.close(); bufOut.close(); } } private void writehttpbottom(PrintWriter writer) { writer.write("\n"); writer.write("

"); } private void writeResource(BufferedReader reader, PrintWriter writer) throws IOException { while (reader.ready()) { String line = reader.readLine(); line = line.replaceAll("<", "<").replaceAll(">", ">"); writer.write(line); writer.println(); } } private void writehttphead(PrintWriter writer) { writer.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); writer.write(""); writer.write("<link rel=\"stylesheet\" href=\""); writer.write(WebletUtils.getURL("weblets.demo", "/styles/weblets.css")); writer.write("\" ></link>"); writer.write("

"); writer.write("\n"); } }
This is a simple copy strategy which does some post processing on sourcecode to beautify it with a little bit of decoration.
The main entry points are defined by the CopyStrategy interface
/** * Central contractual interface for our copy strategy control usually a copy provider chains some input output streams together to get a certain behavior */ public interface CopyStrategy { /** * central copy method * * @param the weblet name the weblet name * @param mimetype the response mimetype * @param in the incoming data input stream * @param out the receiving steam * @throws java.io.IOException in case of an error */ void copy(String webletName, String mimetype, InputStream in, OutputStream out) throws IOException; /** * wraps the incoming input stream with post processing filters * @param the weblet name * @param in the incoming stream * * @return an inputstream with the resource or null if none is found * @throws IOException in case of a severe error */ public InputStream wrapInputStream(String webletName, String mimetype, InputStream in) throws IOException; }
Two central points define every copy strategy, the copy operation itself and the filter chain doing the stream processing. Most of the times you probably only have to implement one, either the wrapInputStream class adding to your chain or your own copy operation additionally to the default copy behavior by exposing the copy operation. This operation is only called so far by the serviceStream most of the times you can use it from your copy operation or omit it by simply delivering the input stream as return value
The central operation itself is the copy operation In our example we have overriden the copy operation by decorating the incoming text with our own html code for beautification.
The second operation is the exposed method wrapInputStream , which builds up the input stream chain for the reporting subsystem.
 Normally it should be sufficient to simply derive from CopyStrategyImpl and then implement your own copy operation!
public class SourcecodeCopyStrategy extends CopyStrategyImpl implements CopyStrategy { public void copy(String webletName, String mimeType, InputStream in, OutputStream out) throws IOException { copyText(webletName, new InputStreamReader(in), new OutputStreamWriter(out)); } protected void copyText(String webletName, Reader in, Writer out) throws IOException { byte[] buffer = new byte[2048]; int len = 0; int total = 0; BufferedReader bufIn = new BufferedReader(mapResponseReader(webletName, in)); PrintWriter bufOut = new PrintWriter(mapResponseWriter(out)); try { writehttphead(bufOut); writeResource(bufIn, bufOut); writehttpbottom(bufOut); } finally { bufIn.close(); bufOut.close(); } } ...
Another example would be our packaged Weblet with the default CopyProviderImpl. This class changes its copy post processing on the fly depending on the mime type of the served file. Every binary file is served as is, and every text file is post processed for weblet frontend functions and replaced in the fly with their appropriate URL calls!
public void copy(String webletName, String contentType, InputStream in, OutputStream out) throws IOException { boolean isText = isText(contentType); if (isText) copyText(webletName, new InputStreamReader(in), new OutputStreamWriter(out)); else copyStream(in, out); } private boolean isText(String contentType) { return contentType != null && (contentType.startsWith("text/") || contentType.endsWith("xml") || contentType.equals("application/x-javascript")); } protected void copyText(String webletName, Reader in, Writer out) throws IOException { byte[] buffer = new byte[2048]; int len = 0; int total = 0; BufferedReader bufIn = mapResponseReader(webletName, in); BufferedWriter bufOut = mapResponseWriter(out); try { String line = null; while ((line = bufIn.readLine()) != null) { bufOut.write(line); bufOut.write("\n"); } } finally { bufIn.close(); bufOut.close(); } } protected void copyStream(InputStream in, OutputStream out) throws IOException { byte[] buffer = new byte[2048]; BufferedInputStream bufIn = mapInputStream(in); BufferedOutputStream bufOut = mapOutputStream(out); int len = 0; int total = 0; try { while ((len = bufIn.read(buffer)) > 0) { bufOut.write(buffer, 0, len); total += len; } } finally { bufIn.close(); bufOut.close(); } } protected BufferedReader mapResponseReader(String webletName, Reader in) { return new TextProcessingReader(in, webletName); }
Now, as we can see, a builder chain is built up especially for text files, with only one purpose, the dynamic input stream processing for the Weblet functions. A reader is used internally to achieve this behavior in a proper manner! However the API enforces that a stream is served, and the reader has to be mapped into a stream. There is a huge gap in the java API which does not allow that without going through huge problems!
However, Weblets provides its own Reader -> InputStream chaining class InputStreamReader , to bypass this limitation!
A filter chain then is built on top of the input stream, and in the middle of this chain the text is changed on the fly with a parsing class TextProcessingReader , which parses for weblets:url and resource patterns. For a caller outside nothing has changed everything still is an input stream.
The second operation wrapInputStream builds up the filter cascade for your input streams depending on the mime type delivered for reporting cases!
This method must be able to handle everything without referring to a request or response object delivered by the underlying container. Due to the nature of reports of being able to work outside of a single request parallely to the running servlet processes. This method should only be called for reporting purposes!
Following code shows an example on how to implement such a filter cascade:
/** * wraps the input stream from our given request into another input stream * * @param webletName the name of the affected weblet * @param mimetype the response mimetype * @param in our given input steam * @return a wrapped input stream with our filterng cascade in place * @throws IOException in case of an error */ public InputStream wrapInputStream(String webletName, String mimetype, InputStream in) throws IOException { if (isText(mimetype)) { BufferedReader bufIn = new BufferedReader(mapResponseReader(webletName, new InputStreamReader(in))); return new ReaderInputStream(bufIn); } return new BufferedInputStream(in); }
This code example shows how to build up such a cascade. While the details themselves are not that important (It basically builds up a parsing input chain for text files which do the weblets:function processing) the important part is, you have to use an input stream as incoming parameter and the outgoing parameter must be another input stream .
However one important point is, if you have to revert to readers for simpler text processing weblets provides a helper class missing in the java api, which does the reader -> inputstream back-conversion the ReaderInputStream class.
Lets face it, the world is insecure, web applications can insecure and serving resources opens security holes. Following code would serve anything to the world (probably even your grandmother if she would be there).
fullAddr.append(httpRequest.getSession().getServletContext().getRealPath(request.getPathInfo())); String resourcePath = fullAddr.toString(); CopyStrategy copyProvider = new SourcecodeCopyStrategy(); response.setContentType("text/html"); FileInputStream fin = new FileInputStream(resourcePath); WebletResourceloadingUtils.getInstance().loadResourceFromStream(getWebletConfig(), request, response, copyProvider, fin);
This example theoretically can serve every resource in your filesystem to the frontend.
Basically what we have to deal with are two security concerns we have to address:
a) Never serve unwanted resources or resources from a directory not really accessible for the enduser b) Never allow that with the tampering of URLs it is possible to break out of a designated sandbox you advice to the resource pack to hold your resources.
For packaged resources a) should not be of importance unless you do not address b. Only resources located in the package under normal circumstances can be affected. However if you serve resources from the local filesystem a) becomes an issue. The problem is caused by the servlet API itself. While servlets and their configuration have good shields of not providing resources they should not provide, they do not have those shields at their api level. You can access the path information via the servlet api, but it does not block you from accessing the WEB-INF directories or the context directories, jsp files are not translated into html either, this way.
Always if you program your own weblet and you are in a critical environment have that in mind. Never let the code go lower than your root context, never let the code access your configuration map files which should not be seen or block them entirely, try to block break out the sandbox approaches via url tampering (injecting ..).
Weblets does not leave you alone with those concerns. While the example above does not have any security Weblets does. By using Weblets you have everything in place you do not have to be concerned anymore.
If you roll your own weblet then you have several infrastructural facilities which should ease the burdens which are laid on you.
This basically means your resources are located within a root which only can host resources, nothing else. Weblets adresses jailbreak prevention already on container level (From the Weblet container implementation): (Note this code part is provided already nothing has to be implemented)
public void service(WebletRequest request, WebletResponse response) throws IOException, WebletException { Weblet weblet = getWeblet(request); String pathInfo = request.getPathInfo(); if (response.getDefaultContentType() == null) { //enhanced security check if (pathInfo != null && SandboxGuard.isJailBreak(pathInfo)) { throw new WebletException(PATHINFO_EXCEPTION); } WebletConfig webConfig = weblet.getWebletConfig(); if (pathInfo != null) { String mimeType = webConfig.getMimeType(pathInfo); response.setDefaultContentType(mimeType); } } WebletConfig webConfig = weblet.getWebletConfig(); Set allowedResources = webConfig.getAllowedResources(); if (allowedResources != null) { String filetype = StringUtils.getExtension(pathInfo); if (!allowedResources.contains(filetype.toLowerCase())) { throw new WebletException(PATHINFO_EXCEPTION /*not allowed no content delivered */ } } weblet.service(request, response);
The important code part is: SandboxGuard.isJailBreak(pathInfo) This is a small test against jailbreaking within the path info passed down to Weblets!
This means, every Weblet already has sidestepping and downstepping prevention and every weblet root is seen as a jail which is not allowed to be broken out! Unless you want to open new security holes (like we did in our example above) we do not need to take care of anything in this regard anymore, the class SandboxGuard takes care of those issues.
The second part is the mime type handling and resource whitelisting, this is an opt in option. Every Weblet now also allows the setting of whitelisted allowedResources in its config:
<init-param> <param-name>allowedResources</param-name> <param-value> jpg, png </param-value> </init-param>
If this parameter is set then the file extension protection is on in full force . Only jpg and png extensions are allowed in this case no other file can be served from the filesystem, also those extensions are handled in a case insenstive manner, which is important for hosting systems not using case sensitive filenames.
For the programmer this comes free, you do not have to take care of it, all you have to do is to make sure this option is enabled (which it is not by default)!
Now what about directory exclusion For now Weblets has no dedicated mechanism for doing that, if you want to do that you can do it within your service method of your Weblet.
CopyStrategy copyProvider = new CopyStrategyImpl(); if (resourcePath.indexOf("WEB-INF/") != -1 || resourcePath.indexOf("WEB-INF\\") != -1) { throw new WebletException(PATHINFO_EXCEPTION); } if (resourcePath.indexOf("META-INF/") != -1 || resourcePath.indexOf("META-INF\\") != -1) { throw new WebletException(PATHINFO_EXCEPTION); }
Summary:
You get a lot of security out of the box, if we revisit our anti example in the beginning:
fullAddr.append(httpRequest.getSession().getServletContext().getRealPath(request.getPathInfo())); String resourcePath = fullAddr.toString(); CopyStrategy copyProvider = new SourcecodeCopyStrategy(); response.setContentType("text/html"); FileInputStream fin = new FileInputStream(resourcePath); WebletResourceloadingUtils.getInstance().loadResourceFromStream(getWebletConfig(), request, response, copyProvider, fin);
Is basically bad, but Weblets per default at least takes care of sidestepping and trying to break out of the resource root (in this case probably the webapp itself and its root context)
Adding following lines to the weblets-config.xml would add additional filetype security:
<init-param> <param-name>allowedResources</param-name> <param-value> jsp, jspx, html </param-value> </init-param>
So only jsp, jspx and html files can be served, an attempt to serve anything else would result in a security exception!
All of this comes out of the box if you program your own Weblet, if you need additional security (locking of certain directories etc...) you have to program it on your own in your service and serviceStream methods!


"Alligator"
A Review by Ryan Kohler
Movies, for the most part, should be entertaining. Sometimes it doesn't matter what the subject matter or how well made it is technically. "Brain Donors" is comedy that makes me laugh hard everytime I see it, though I wouldn't put it on any top-ten list. "Alligator" is film that should be seen and enjoyed; it is a none-too-gory horror film about a mutant alligator (see, Mom, was right: alligators do live in the sewers.)
At the center of the story is David Madison (Robert Forster), a cop with a guilty conscience. When sewer workers start turning up in pieces in the Chicago sewer system, Madison is called in to investigate. It soon becomes obvious that a huge-ass alligator is loose in the sewer. With the help of a doctor named Marisa (Robin Riker), Madison tracks down the alligator (whose name turns out to be Ramon) and comes face to face with him a rather tension filled finale.
The script, by John Sayles (!), is humorous and is above the grain for a horror film (but considering that Sayles wrote it, the quality is not all that surprising.) Lewis Teague (who went to "Cujo) creates a number of interesting visuals, most effective in the final showdown as the sewer becomes enshrouded in haze and smoke.
The odd thing about "Alligator" was that it was not very scary. It creates tension, sure, but there aren't any jump-out-of-your-seat shocks. The alligator itself is humorous in appearance; it is a big, lumbering, obviously fake thing that helps to ease fear. To be honest, I don't think that is a bad thing; perhaps the lack of shocks or scares may upset other people looking for that, but I was more interested, and enjoyed more, the performances and the witty script.
The cast is led by Robert Forster (known now for "Jackie Brown). He brings a unshaven, rugged quality to the role of David the cop. David is a lot like a usual film cop: his apartment is small, cluttered, with some art posters on the walls, he lives alone, has a cute little puppy to keep him company. Forster fits the role very well and, the most important thing, he looks like he is having fun. Essentially, I feel that "Alligator" is kind of a joke; Forster gives the impression that he is in on the joke and creates a likable screen presence.
The others in the cast do a good job with the material, including Robin Riker as the doctor who, naturally, takes a liking to David. Michael Gazzo is also on hand as The Chief, who is skeptical at first but eventually believes David.
The only real distraction in the film is Colonel Brock, a big-game hunter, played by Henry Silva. Brock is a required character because his presence forces David to get fired and hunt the alligator on his own, which is what HAS to happen. Silva is such a bad actor, however, that his character is an annoyance in his few scenes before he becomes gator food.
If you're looking for a good time, go and pick up "Alligator" from the video store. Some films are meant to be entertaining and enjoyed. This was one of them; "Alligator" does not disappoint.
Rating (out of 4.0): 3.0
"Alligator" (1980). Written by John Sayles. Directed by Lewis Teague. With Robert Forster, Robin Riker, Michael Gazzo, Dean Jagger, and Henry Silva. Running time: 94 minutes. Available on home video. Rated: R.
---- 24 May 1998
Visit my Film Review Multiplex: http://pages.prodigy.com/XWKZ01B/index.htm
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


gmmktime
(PHP 4, PHP 5, PHP 7)
gmmktime — 取得 GMT 日期的 UNIX 时间戳
说明
int gmmktime ([ int $hour [, int $minute [, int $second [, int $month [, int
$day [, int $year [, int $is_dst ]]]]]]] )
和 mktime() 完全一样，只除了返回值是格林威治标准时的时间戳。
参数总是表示 GMT 日期，因此 is_dst 对结果没有影响。
和 mktime() 一样，参数可以从右到左依次空着，空着的参数会被设为相应的当前 GMT 值
。
Note:
自 5.1.0 起，is_dst 参数被废弃。因此应该用新的时区处理特性。
Note: gmmktime() 内部使用了 mktime()，因此只有转换成本地时间也合法的时间才
能用在其中。 so only times valid in derived local time can be used.
Example #1 gmmktime() 在 Windows 中的边界
参见 mktime()，date() 和 time()。
User Contributed Notes 19 notes
===============================================================================
The interaction of timezones with unix timestamps is a bit tricky so I thought
I'd clarify so that people aren't led too far astray by Greg's and Glen's
comments. :)
In the POSIX standard, "unix time" does not have a specified timezone. It is
universal. For most intents and purposes you can think of them as always being
GMT/UTC. (And you can derive the UTC time from a "timestamp" by dividing it by
86400 and looking at the modulus.) Do not ever try to adjust a timestamp by a
timezone offset (specifically, do not ever use the code at the end of Glen's
note). Timezones are basically used only when "rendering" a timestamp from
"unix time" into a "civil time" date/time string.
Let's take an example. PST is GMT-8, and EST is GMT-5. So when it is 3 AM in
PST, it is 6 AM in EST. At that exact moment in time, the _timestamp_ is
identical in both time zones.
So, time() always will return the same thing at the same actual moment,
anywhere in the world. gmmktime() and mktime(), when given specific time
parameters, convert those time parameters FROM the appropriate timezone (GMT
for gmmktime(), local time for mktime()), before computing the appropriate
timestamp. Again, for most intents and purposes you can imagine that mktime()
first converts your input parameters to GMT and then calls gmmktime() which
produces a GMT timestamp. (For the purposes of this explanation, please ignore
the fact that the PHP documentation says that internally gmmktime() calls
mktime().)
HOWEVER, when called with no arguments, gmmktime() uses the current GMT time,
and mktime() uses the current local time. So, if you imagine the above
conversion taking place where mktime() converts the (current) local time to
GMT, it ends up essentially calling gmmktime() with the _current_ GMT time,
just like gmmktime() does all by itself.
This is why time(), gmmktime(), and mktime() all return the same exact
timestamp, _when called with no arguments_. This is why Glen saw them all
produce the same thing.
Greg wrote that gmmktime() will return something different if you are not
sitting in the GMT timezone, but this is only true if you have given it
arguments from which to construct a timestamp.
So let's look at that situation again. Say I am in PST and it's 3 AM PST.
(And therefore it is 11 AM GMT.) mktime() lets me override one field at at
time, and the first argument is, conveniently, the hour field. So if I call
mktime(3), I get the same answer as mktime(). Makes sense, right? I just told
it to give me the timestamp corresponding to 3 AM local time. If I call
gmmktime(11), I get the same answer as gmmktime(), since it is currently 11 AM
GMT. mktime(3) and gmmktime(11) refer to the same exact point in time, because
PST is 8 hours behind GMT. So it makes sense that mktime(3) == gmmktime(11).
And sine mktime() == mktime(3) (at this moment), and gmmktime() == gmmktime(11)
(at this moment), it makes sense that gmmktime() == mktime().
Now, back to Greg's note about gmmktime() being different. With identical
arguments, their output will be different, e.g. mktime(3) != gmmktime(3). This
makes sense because 3 AM PST != 3 AM GMT.
Okay, that should be all you need to know to deal with the interaction between
timestamps and timezones. Don't ever try to convert timezones by adding or
subtracting to the timestamp. Timestamps don't really have timezones, it is
apples and oranges, and you'll either get the wrong answer in some situations
or end up with code that no one can maintain. Leave it up to the higher-level
PHP functions to do the conversion. (If you want to hack things, strtotime is
handy and it can work with timezones; let it do the hard work for you.)
===============================================================================
I had a problem with hosting a UK site on a US server, the times didnt match
(obviously) and also didnt account for daylight savings time. The daylight
savings dates and times of change differ worldwide, so detecting if the server
was in dst wouldnt work (see http://webexhibits.org/daylightsaving/).
Here is a function for creating a timestamp which can be used by date() to
create all the parameters required to display the local time (site not server).
I have used GMT time to create the timestamp as there is no offset for UK time
(+00).
$last_sunday_of_march) && ($timestamp <
$last_sunday_of_october) )
{
$timestamp=$timestamp+3600; // foward one hour
}
return $timestamp;
}
?>
===============================================================================
GMT time is useful for avoiding the daylight's savings issue. I had to use it
to get a working date difference function:
===============================================================================
1 )
return $daysRemaining ." Days ";
else
return $daysRemaining ." Day ";
}
if(empty($daysRemaining))
{
$secondsInHour= 60*60;
if ($secondsInHour <= $timeMinus)
{
$hoursRemaining =floor ($timeMinus/
$secondsInHour);
if($hoursRemaining > 1 )
return $hoursRemaining ." Hours ";
else
return $hoursRemaining ." Hour ";
}
}
if(empty($hoursRemaining))
{
//$secondsRemaining = $timeMinus. " Seconds";
$secondsInMinute = 60;
if ($secondsInMinute <= $timeMinus)
{
$mintuesRemaining =floor ($timeMinus/
$secondsInMinute);
if($mintuesRemaining > 1 )
return $mintuesRemaining ." Minutes ";
else
return $mintuesRemaining ." Minute ";
}
}
if(empty($mintuesRemaining))
{
$secondsRemaining = $timeMinus;
if($secondsRemaining < 0)
{
timedOutSale($ID,$table,$coloumnName);
return "Time out";
}
elseif($secondsRemaining > 1 )
return $secondsRemaining . " Seconds";
else
return $secondsRemaining . " Second";
}
}
function timedOutSale($ID,$table)
{
GLOBAL $configVars, $db,$tableNames;
$query = "UPDATE " . $table
. " SET status = 'T'
WHERE $coloumnName = '" . $ID ."'";
$result = $db->query($query);
return;
}
?>
===============================================================================
Here's a play on turgut85's countDays function. I've found it to be more
efficient and it accepts unix timestamps rather than arrays. Thanks for the
ideas.
===============================================================================
mwwaygoo's code isn't quite right. My understanding is that the relevant dates
for changing between daylight saving time in the UK is the third sunday of
march and october - not the last sunday!
===============================================================================
Beware that despite the documentation which states is_dst is ignored, with PHP
5.2 at least, it is not actually ignored and will cause a 1 hour offset on the
UTC time returned.
This caused some interesting bugs, especially with the tzdelta function shown
from previous posts below - you need to make the final parameter a 0 instead of
$ar[8] otherwise you get an off-by-1-hour as a result.
As a result, I now use :
===============================================================================
1 )
return $daysRemaining ." Days ";
else
return $daysRemaining ." Day ";
}
if(empty($daysRemaining))
{
$secondsInHour= 60*60;
if ($secondsInHour <= $timeMinus)
{
$hoursRemaining =floor ($timeMinus/
$secondsInHour);
if($hoursRemaining > 1 )
return $hoursRemaining ." Hours ";
else
return $hoursRemaining ." Hour ";
}
}
if(empty($hoursRemaining))
{
//$secondsRemaining = $timeMinus. " Seconds";
$secondsInMinute = 60;
if ($secondsInMinute <= $timeMinus)
{
$mintuesRemaining =floor ($timeMinus/
$secondsInMinute);
if($mintuesRemaining > 1 )
return $mintuesRemaining ." Minutes ";
else
return $mintuesRemaining ." Minute ";
}
}
if(empty($mintuesRemaining))
{
$secondsRemaining = $timeMinus;
if($secondsRemaining < 0)
{
timedOutSale($ID,$table,$coloumnName);
return "Time out";
}
elseif($secondsRemaining > 1 )
return $secondsRemaining . " Seconds";
else
return $secondsRemaining . " Second";
}
}
function timedOutSale($ID,$table)
{
GLOBAL $configVars, $db,$tableNames;
$query = "UPDATE " . $table
. " SET status = 'T'
WHERE $coloumnName = '" . $ID ."'";
$result = $db->query($query);
return;
}
?>
===============================================================================
Here is a handy routine for counting down to the minute, hour, and day to a
timestamp
= 60 && $minutesleft < (24*60)) {
$timeleft = (floor($minutesleft/60) == 1 ? '1 hour' : floor(
$minutesleft/60).' hours');
}
else if ($minutesleft >= (24*60)) {
$days = floor($minutesleft / (24*60));
// hours remainder
$hours = ($minutesleft % (24*60)) / 60;
// hours left in the day
$hours_left = ((time() / 60) % (24*60)) / 60;
// see if the remainder of hours is greater than the hours left in
today, if so increase the days by one so that the days remaining mimics the
date rather than how many 24 hour periods there are between now and then.
if($hours > $hours_left) {
$days++;
}
$timeleft = ($days == 1 ? '1 day' : $days.' days');
}
echo $timeleft;
?>
===============================================================================
Why not just do:
===============================================================================
Turgut Z. YESILYURT
<EMAIL_ADDRESS>System and Application Developer
New Jersey, USA
===============================================================================
REF: http://www.dti.gov.uk/er/sumtimetb.htm
Since 1981 EC Directives have prescribed the start and end dates of summer time
in all Member States. There have to date been eight Directives which have set
summer-time arrangements for fixed periods. The Summer Time Act 1972 sets the
appropriate dates in the UK and summer-time orders have been made as necessary
to implement the European Directives. The 9th EC Directive prescribes the start
and end dates of summer time as the last Sundays in March and October
respectively. These dates are in line with those already operating in the
United Kingdom. The 9th Directive provides that these start and end dates
should apply indefinitely.
---
9th EC Directive - 19 January 2001
Article 1
For the purposes of this Directive "summer-time period" shall mean the period
of the year during which clocks are put forward by 60 minutes compared with the
rest of the year.
Article 2
From 2002 onwards, the summer-time period shall begin, in every Member State,
at 1.00 a.m., Greenwich Mean Time, on the last Sunday in March.
Article 3
From 2002 onwards, the summer-time period shall end, in every Member State, at
1.00 a.m., Greenwich Mean Time, on the last Sunday in October.
You stand corrected ;-) (well up until 2007 anyway)
===============================================================================
There appears to be a discrepency between PHP and C timestamps. The C time()
and gettimeofday() functions are documented to return based on UTC time, but
the value obtained doesn't match the PHP gmmktime() function. Instead, it
matches the PHP mktime() function, which is supposed to be local time.
It seems that C always uses a UTC timestamp and adjusts to local time through
different handling functions (gmtime() vs localtime()). PHP appears to use
differing UTC/local timestamps, but single handling functions.
The exception to this rule is the PHP time() function, which appears to behave
in the same was as the C version.
In short, if your PHP is working with timestamps created in C (or vice versa)
make sure you are comparing apples to apples.
===============================================================================
When attempting to use HTTP's If-Modified-Since features for caching I ran into
the problem of being able to compare the GMT date the browser was sending to my
own Last-Modified date (stored in a database field). I saw many examples of how
to create a GMT date from a unix timestamp, but little on how to actually get a
GMT date into a unix timestamp. Perhaps someone has a better way, here's my
solution:
1,
'Feb'=>2,
'Mar'=>3,
'Apr'=>4,
'May'=>5,
'Jun'=>6,
'Jul'=>7,
'Aug'=>8,
'Sep'=>9,
'Oct'=>10,
'Nov'=>11,
'Dec'=>12
);
list($D, $d, $M, $Y, $H, $i, $s) = sscanf($sgm, "%3s, %2d %3s %4d
%2d:%2d:%2d GMT");
return gmmktime($H, $i, $s, $months[$M], $d, $Y);
}
// test: after all is said and done
// $time should be the same as $gmtime
$time = time();
$us = date("m/d/Y H:i:s",$time);
$sgm = gmdate("D, d M Y H:i:s",$time) . " GMT";
$gmtime = gmstrtotime($sgm);
echo $us . "
";
echo $sgm . "
";
echo $time . "
";
echo $gmtime . "
";
?>
My results:
02/13/2004 10:45:42
Fri, 13 Feb 2004 20:45:42 GMT
1076705142
1076705142
Credit to kyle at frozenonline dot com for his strtotime example
===============================================================================
= $begin_time && $time < $end_time;
return $is_dst;
}
?>
===============================================================================
I have seen many different hacked versions of this function for people using
Windows that want to support dates before Jan 1, 1970. Here is yet another one
that is different than others you may have seen! It does not use loops like all
the others I have seen!
1969 )
{
return ( gmmktime ( $hour, $minute, $second, $month, $day, $year ) );
}
$t = 0;
$ds = 86400;
$hs = 3600;
$dy = 365;
$ms = 60;
$months = array ( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );
$leap_year = $year % 4 == 0 && ( $year % 100 > 0 || $year % 400 == 0 ) ?
true : false;
if ( $year < 1969 )
{
$y = 1969 - $year;
$t -= ( $y * $dy ) * $ds;
$x = ceil ( $y / 4 );
if ( $leap_year && $month > 2 )
{
$x -= 1;
}
$t -= $x * $ds;
}
if ( $month != 12 )
{
$tm = $months;
$tm = array_slice ( $tm, $month );
$t -= array_sum ( $tm ) * $ds;
unset ( $tm );
}
$nh = ( ( $month == 2 && $leap_year ? 29 : $months[$month-1] ) - $day );
$t -= $nh != 0 ? $nh * $ds : 0;
$nh = 23 - $hour;
$t -= $nh != 0 ? $nh * $hs : 0;
$nh = 59 - $minute;
$t -= $nh != 0 ? $nh * $ms : 0;
$nh = 59 - $second;
$t -= $nh != 0 ? $nh + 1 : 0;
return ( $t );
}
?>
===============================================================================
In addition to GLEN's post on DEC 5th 2007
(Just a note for others)
The results for the three time types Glen listed under "returns" all returned
the exact same timestamp
-<PHONE_NUMBER>
Using those three functions will only make the exact same timestamp if the
server the code is executed on IS in GMT timezone.
'mktime()' and 'time()' will both return the timestamp for your server time,
and will both be the same as eachother.
gmmktime will return a GMT timestamp.
So if run on a server that is NOT in the GMT timezone then gmmktime will return
a different timestamp to the other two.
===============================================================================
As an addendum to my previous note (php.net said it was too long and I had to
split this part off), I'll leave you with one more fun tidbit. :)
(See the note below this one for a full explanation of timezones versus unix
timestamps.)
3 AM PST == 11 AM GMT, right? 11 AM _GMT_ > 3 AM _GMT_ (same timezone) right?
So, logically, 3 AM PST > 3 AM GMT. (Makes sense right, it is 3 AM in
California 8 hours after it is 3 AM in Greenwich.) Now, because timestamps are
timezone-independent (or, always GMT/UTC), you get a strange situation. mktime
(3) > gmmktime(3). Even though PST is GMT-8, so PST is less than GMT, mktime
(3) is _greater_ than gmmktime(3). At first glance you'd probably expect
mktime(3) to be less than gmmktime(3), but because of everything I described
before, about how timestamps are always GMT/UTC (or, in some senses, no
timezone at all), it ends up being "backwards." (Run a few examples yourself
if you don't believe me.) Yet another reason not to try to deal with timezones
at the timestamp level!
===============================================================================
gmmktime() should ONLY be used to create a timestamp when specifying a specific
GMT date and time.
If you want to make a valid time stamp for the current date & time, use mktime
() instead.
UNIX timestamps, by definition, store the GMT time relative to the UNIX epoch.
gmmktime() (without any parameters specified) will effectively use the
computer's LOCAL time values just the same as if they were explicit parameters,
and the resulting time stamp will be incorrect. (The resulting timestamp will
actually be offset in the OPPOSITE direction of the local timezone offset from
GMT!)


July 1, 2021
What is the display property?
The display property determines how your content in your HTML file is displayed. Most elements default as inline or block types, but you may specify for an element to be displayed as an inline-block type element instead. All of these types are interchangeable, so use them as you see fit!
Inline
CSS code display: inline;
inline elements appear next to each other in the order they are written in the HTML. These however, will not allow you adjust the top and bottom margin nor the corresponding padding attributes.
For example, anchor and span are displayed inline by default.
This link is displayed inline (<- this is a span, by the way) with the sentence. I can also increase the left and right margin and padding! It’ll ignore top and bottom margins and padding (though the highlight is still displayed).
Block
CSS code display: block;
block elements will always start on a new line. These will look at any and all margin and padding values and apply them accordingly.
For example, paragraph, list and div start on new lines.
This is a paragraph of text.
I’m in a list!
Me too!
Me three!
Inline-block
CSS code display: inline-block;
Does exactly as it says. This will set an element to be displayed inline with all the attributes of a block element available, most notably with the top and bottom margin and padding in effect.
Let's kick it off with a random sentence to fill up the first line! Here's a bit more just in case. But why should we stop here? Let's fill up the second one too. Feel free to stop reading whenever! Okay, looks good enough on my end. Hopefully good on yours too! Here we see some words with a some padding and margins in the middle of this sentence! Actually, let's keep extending this sentence so that it covers multiple lines again, to for emphasis!
Here's another example:
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Tiny Id leo in vitae turpis massa sed. Pellentesque nec nam aliquam sem et. Ipsum dolor sit amet consectetur adipiscing elit duis. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Tellus rutrum tellus pellentesque eu tincidunt tortor aliquam nulla. Porta nibh venenatis cras sed felis eget velit aliquet. Medium Integer malesuada nunc vel risus commodo. Sem integer vitae justo eget magna. Nisl nisi scelerisque eu ultrices vitae auctor. Pellentesque nec nam aliquam sem et tortor consequat. Tempor commodo ullamcorper a lacus. Ipsum dolor sit amet consectetur adipiscing elit duis. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Large Here's some random words inbetween boxes! Medium Tiny Tellus rutrum tellus pellentesque eu tincidunt tortor aliquam nulla. Tiny Tiny Tiny Tiny Tiny Tiny Porta nibh venenatis cras sed felis eget velit aliquet. Integer malesuada nunc vel risus commodo. Sem integer vitae justo eget magna.
Why is this useful?
I found this to be extremely useful for making my navigation bar. It consists of an unordered list of anchor elements.
By default, the elements will be displayed like this (this bar is just a demo with dead links):

  Home

  Blog

  About

Declaring the list to display with and inline-block will give us this:

  Home

  Blog

  About

That’s pretty much it on how I made my navigation bar, but there was just one little thing I didn’t like about this. Did you notice the small, unclickable spaces in between the links? They exist because inline-block lines the elements up like a sentence, so they are essentially the same spaces that exist when we type.
There are a few workarounds for this issue. For me, I removed the closing tags
 in my HTML and this fixed the gaps:

  Home
  Blog
  About

You can have a look at the other workarounds found at css-tricks! (<- It’s a really cool site!)
I hope you found something useful for your project, or just had a good time.
Thanks for reading and I’ll see you at the next one!


These settings help to harden openssh-server on your machine. While it secures quite a bit of your SSH server, certain important fields of SSH security, such as allowing and denying users, limiting IP and port access, generating SSH keys, displaying a login banner and more are not covered in this topic. NOTE: These configurations are only necessary if the sshd service is critical for your system. If an SSH server is not critical, remove it by typing sudo apt-get purge openssh-server.
Edit the SSH server configuration file by typing sudo nano /etc/ssh/sshd_config.
Once in the file, secure the parameters shown below by modifying their value:
Parameter Name
Default
Secure
Details
Port
22
(any unused port)
Using a non-standard port for SSH reduces the risk of unauthorized entities over the web connecting to your machine. When selecting a port, choose one above 1024 that isn't used by something else (don't use 2222; it's a very common alternative port for SSH).
Protocol
2
2
Version 1 of the SSH protocol is riddled with security vulnerabilities; stick to Version 2.
LogLevel
INFO
VERBOSE
Setting the LogLevel to VERBOSE instead of INFO allows more security information, such as failed login attempts, to be logged.
LoginGraceTime
120
30
Controls how long the server waits before disconnecting a user attempting to login. It is recommended to reduce this time.
PermitRootLogin
prohibit-password
no
The root user should never be accessed over SSH (hackers will typically attempt to log in as this user). Instead, those connecting over SSH should login as a normal user and depend on sudo privileges to perform administrative tasks.
StrictModes
yes
yes
Setting this to "yes" prevents the usage of insecure home directory and key file permissions.
RSAAuthentication
yes
yes
Helps prevent insecure access to user accounts via .rhosts.
IgnoreRhosts
yes
yes
Helps prevent insecure access to user accounts via .rhosts.
RhostsRSAAuthentication
no
no
Helps prevent insecure access to user accounts via .rhosts.
HostBasedAuthentication
no
no
Even though SSH has a cryptographic host-based authentication that's slightly more secure than .rhosts authentication, it is not recommended for hosts to trust one another
PermitEmptyPasswords
no
no
You should never allow a user without a password to log on through SSH.
X11Forwarding
yes
no
Enabling this setting allows tunneled network connections, which hackers could potentially use to log into systems.
PrintLastLog
yes
no
The username of the last user to log on should be hidden. If an attacker knows a username in the system, they have more information with which they can break in.
UsePAM
yes
no
PAM (password authentication) should be disabled if you are using SSH keys. (And you absolutely should be)
The below parameters are in the file, but they are commented out with a pound symbol (#). Remove the pound symbol and secure these two settings:
PasswordAuthentication
no
no
Using a password to authenticate an SSH connection is not nearly as secure as using a set of SSH keys, which are very difficult to break. This setting should be set to no, and an SSH key pair should be generated.
MaxStartups
10:30:60
2
Limits the number of unauthenticated connections to the server at a time. This helps prevent against brute force attacks that attempt to authenticate over parallel connections. The default configuration is 10:30:60, which allows 10 connections at first, then starts dropping 30% of new connections, then hits a maximum of 60 connections.
Then, go to the bottom of the file and add the following parameters to the file:
PermitUserEnvironment
no
Prevents user from presenting environment options to the SSH server, potentially allowing them to bypass some access restrictions.
UseDNS
no
Setting this to yes might create a latency between the client and the server when establishing a connection. We are applying this setting just in case.
ClientAliveInterval
300
Reduces the chance of an open SSH session being left unattended.
ClientAliveCountMax
0
Reduces the chance of an open SSH session being left unattended.
RhostsAuthentication
no
Helps prevent insecure access to user accounts via .rhosts.
AllowTcpForwarding
no
Enabling this setting allows tunneled network connections, which hackers could potentially use to log into systems.
Type Ctrl+O to save the file and Ctrl+X to exit (if using nano).
Finally, restart the sshd service by typing sudo service sshd restart.


DfE enquiries
Central newsdesk 020 7783 8300
General enquiries 0370 000 2288
Press release
Details of how universities will be rated under the second year of the Teaching Excellence Framework (TEF) published today.
Plans to rate universities on the quality of teaching they offer have been confirmed today (29 September 2016) as the government publishes details of how the second trial year of the Teaching Excellence Framework will operate .
The framework, announced in the government’s higher education white paper ‘Success as a knowledge economy: teaching excellence, social mobility and student choice’ in May, is now entering its second year. Documents published today give more detailed information on the assessments of year 2 - which will be carried out early next year, with ratings of gold, silver and bronze announced in May 2017. These ratings can then be used by students applying for university in autumn 2017 to get a clear picture of where they are likely to receive the best teaching and obtain the best outcomes. The assessment of providers in the second trial year of the framework will focus on outcomes such as student satisfaction, retention rates and employment data.
Universities Minister Jo Johnson said;
By setting out clear incentives for universities, the framework will drive up quality in the sector at the same time as improving student choice and crucially, graduate outcomes - so that we can be confident we have the skills employers need now and for the future.
The framework will also give students clear, understandable information about where the best teaching is on offer and for the first time, place teaching quality on a par with research at our universities.
The responses to the Teaching Excellence Framework: year 2 - technical consultation demonstrated strong overall support for the broad framework. However, it also identified a number of specific suggestions as to how the framework could be further improved, many of which have been incorporated into the final specification, published today. For example, there will now be an appeals process, as well as better protections to ensure universities who take large numbers of socially disadvantaged students are assessed fairly.
Also announced today, providers from Scotland, Wales and Northern Ireland will be able to participate in the TEF should they wish to do so. The framework has been adjusted to ensure that it can fairly assess the distinctive nature of higher education provision in each of the 4 nations of the UK. This will allow the TEF to operate across the UK - something that the sector as a whole was keen to see.
Each TEF assessment will be completed by looking at core metrics such as student satisfaction, non-continuation rates and employment data. It will also look at additional evidence submitted by providers. An assessment will be carried out by peers comprised of experts in teaching and learning as well as student representatives, employer representatives and widening participation experts.
Published today:
Following this announcement, Professor Les Ebdon, Director of Fair Access to Higher Education, said:
The minister has made it clear that he sees fair access as being integral to the TEF , and I welcome the publication of the year 2 specification . The links to fair access have been further strengthened, following clear support from the sector in their consultation responses. It is especially pleasing to see specific measures on positive outcomes for disadvantaged students, and clear instructions to TEF panellists that they should consider disadvantaged students at every stage.
While more people from disadvantaged backgrounds are in higher education than ever before, there is still an unexplained gap in outcomes between the most and least advantaged students. For disadvantaged students fair access is not just about getting in to higher education, it is about getting on too. TEF will ensure that higher education providers have to carefully consider about how to provide excellent teaching for all their students, whatever their background.
As outlined in the white paper published in May 2016, ‘ Success as a knowledge economy ’, the second year of TEF will trial the full assessment process at provider level, on a voluntary basis. The TEF year 2 documents published today confirm the government’s policy and plans to deliver provider level TEF assessments. The sector responded positively to the proposals presented in May 2016. The final proposals present a robust assessment framework, allowing rigorous comparison between providers without inhibiting sector innovation.
These assessments will be undertaken by the Higher Education Funding Council for England ( HEFCE ), working with the Quality Assurance Agency for Higher Education ( QAA ), who have been asked to implement year 2 of the TEF .
Providers who apply for TEF will receive 1 of 3 ratings:
Additional measures that will be included following the technical consultation are:
More information on the Teaching Excellence Framework is available on GOV.UK .
Central newsdesk 020 7783 8300
General enquiries 0370 000 2288
Published: 29 September 2016


4chan: Behavior of an anonymous community
Josh Mills
2016-04-17
I chose the community of 4chan to examine for my project. 4chan is a very unique community with many quirks.
Founded by Christopher Poole, 4chan is a online community much like reddit where users can leave posts, though 4chan is unique because everyone on the site is anonymous.
Users are anonymous
Users generally post anonymously, with the most recent posts appearing above the rest. 4chan is split into various boards with their own specific content and guidelines.
Registration is not required, nor is it possible (except for staff). Launched on October 1, 2003, its boards were originally used for posting pictures and discussing manga
and anime, as the site was modeled on Japanese imageboards, particularly 2chan. The site quickly became popular and expanded, though much of 4chan's content still features
otaku, anime, and other Japanese cultural influences.
Humble beginnings..
Launched on October 1, 2003, its boards were originally used for posting pictures and discussing manga
and anime, as the site was modeled on Japanese imageboards, particularly 2chan. The site quickly became popular and expanded, though much of 4chan's content still features
otaku, anime, and other Japanese cultural influences.
"lunatic, juvenile... brilliant, ridiculous and alarming."
The Guardian once summarized the community in this way. I would show you examples of the message boards, but I struggled to find any appropriate examples..
So.. what about 4chan is interesting/important?
So what makes the 4chan community important and/or interesting to analyze? So far it just seems to be an X-rated version of Reddit.
Anonymity
4chan is interesting because it serves as a great example as to how a fully anonymous community behaves, where even users are unaware of each other.
Unlike Reddit, which is pseudonymous, 4chan is fully anonymous, as explained by a Reddit user. Here we can see that this user has a username (profile)
and therefore other users are aware of what posts this user makes.
4chan on the other hand does not allow for users to have usernames, and even goes to great measures to protect the anonymity of its users from others (government agencies)
The 4chan platform encourages free speech and anonymity. What is the result of this?
What is the result of 4chan's platform of free speech and anonymity?
We are familiar with the tor network, as we have discussed it several times in class. o Tor can be a tangible example of what anonymity on the Internet
can result in. The question is then, should users have the option to browse and use the Internet anonymously?
Tor can be used for good!
Journalists and their audience use Tor
Law enforcement officers use Tor
Activists & Whistleblowers use Tor
However, Tor can also be used to allow some pretty nasty stuff to take place
A part of the Deepnet is accessed through Tor.
What is the cost of online anonymity to society?
Does the community develop trust? is it an example of a participatory culture?
How does the community develop trust, interact with each other? is it a participatory culture?
You all remember generation like. Generation like shows us how badly some people want to participate.
Social media platforms, especially those, which are anonymous, are a great way for people to join a community,
potentially expressing controversial views or beliefs that they may have. The barriers that may exist for other platforms,
mainly the connection to real-life, do not exist with 4chan.
The Global Village
The Internet has become a global village. The question is whether the strength of a community and the power it holds
is used for good or evil purposes. Now, with 4chan's platform, we see an anonymous global village. This greatly changes
the dynamics of the community because how can you help or look out for your neighbor when they are anonymous?
Does the lack of rules make for the environment and the users and abuse, or did the users mutate the environment to suit them? Was it always this way, or did it evolve?
According to studies by (Kahai, 2009)
"When initial opinions among group members differ, source anonymity leads to a lower incidence of counter-normative
arguments compared with the identified or participant-anonymity conditions."
So, in a way the environment allows for less counter-normative opinions/arguments, but the users themselves define what
they think is normative. It just so happens that their idea of normative is counter-normative when compared to the socially accepted standard.
Effects of anonymity on behavior in groups
In a paper by (Postmes et al., 2001), a study on anonymity behavior in groups revealed that anonymous
group members conform tot he standards set by a prime, whereas identifiable group members do not.
Primed norm socially transmitted
This suggests that the primed norm was socially transmitted within the group. This helps to reveal and give reason behind the behavior of 4chan, where members of
a group tend to become followers (sheep, riot crowd) when non-normative, or controversial arguments/ideas are put forward. It is because of the users' anonymity that they
support or encourage behavior that would not be socially acceptable in normal society.
Examples of socially unacceptable behavior:
A user posts live updates to murders while other users cheer him on
The hacking group Anonymous
Nude Celebrity photo hack
Not only is the site the place where hacked nude celebrity photos recently turned up, but it's also largely responsible for the GamerGate controversy, which has resulted
in the online harassment and threatening of women in the video gaming industry.
Is the anonymous platform ethically ‘good’?
We can see from the studies and examples of anonymous
groups and sites like 4chan that significant problems arise from an
anonymous community online, however, are these issues a significant
enough of a problem to break up and prevent anonymous groups from forming,
effectively waging war on privacy and the right to be anonymous in a public
space?
Marc Andreesen, a major investor in tech startups had this to say about other, recently popular anonymous apps.
In my opinion
In my opinion, while I am a strong believer that everyone should have the access to privacy and anonymity if
they want it, I do see how platforms such as 4chan can enable nasty, and socially unacceptable behavior. It
seems to me that the negatives outweigh the good with sites such as these, and perhaps some monitoring should
be done to prevent major issues.
References
Postmes, T., Spears, R., Sakhel, K., & De Groot, D. (2001). Social influence in computer-mediated communication: The effects of anonymity on group behavior. Personality and Social Psychology Bulletin, 27(10), 1243-1254.
Kahai, S. S. (2009). Anonymity and counter-normative arguments in computer-mediated discussions. Group & Organization Management.
Postmes, T., Spears, R., Sakhel, K., & De Groot, D. (2001). Social influence in computer-mediated communication: The effects of anonymity on group behavior. Personality and Social Psychology Bulletin, 27(10), 1243-1254.
Kahai, S. S. (2009). Anonymity and counter-normative arguments in computer-mediated discussions. Group & Organization Management.


Assistant Professor
School of Computer Engineering
KIIT Bhubaneshwar, India
[PostDoc, National University of Singapore]
| 101-H, 1st Floor, Faculty Chamber, Campus 14, Block C School of Computer Engineering KIIT Bhubaneshwar, India, 751024 |
|
|<EMAIL_ADDRESS>| |
|<EMAIL_ADDRESS>| |
| ------- Meeting Hours ------- 3:00 to 5:00 PM, Tuesday || 10:00 to 12:00 PM, Friday | |
| Time Table: 2023 | |
I am an Assistant Professor at the School of Computer Engineering, KIIT Bhubaneshwar.
I was a Postdoctoral Research Fellow at National University of Singapore (NUS). I worked with Prof. Mohan Kankanhalli and Prof. Jussi Keppo in the N-CRiPT Lab. I also worked in collaboration with Prof. Bowei Chen, University of Glasgow, UK.
My current research is in regulatable AI, machine unlearning, data privacy, synthetic data generation, federated learning. I have extensive research experience in video surveillance (moving object detection, anomaly detection), human emotion analysis, aerial surveillance (UAV-based visual data analytics), visual quality enhancement (haze removal, night-image enhancement, image inpainting).
Research Interests
Recent
Career
-
PostDoc Researcher (Scientist) (21 Sep 2020 - 15 July 2022)
National University of Singapore (NUS), Singapore
[QS World University Rankings - 8, QS Asia University Ranking - 1]
Education
-
PhD in Computer Vision & Deep Learning, (August 2020)
Malaviya National Institute of Technology Jaipur, India -
M.E. in Software Engineering (2015)
Thapar University -
B.E. (Hons.) in Computer Science (2011)
BITS Pilani, Pilani


--- title: Project Euler author: Jonathan Carroll date: 2015-01-02 22:27:10 slug: project-euler categories: [R] tags: [rstats] type: '' subtitle: '' image: '' ---
As a means of honing my R programming skills, I’ve decided to tackle the Project Euler questions exclusively using my new favourite programming language. Besides, it seems that R can do just about everything; surely it can handle some programming games. If I get the time, I’ll add updates in other languages as I build my knowledge of them.
As a means of honing my R programming skills, I’ve decided to tackle the Project Euler questions exclusively using my new favourite programming language. Besides, it seems that R can do just about everything; surely it can handle some programming games. If I get the time, I’ll add updates in other languages as I build my knowledge of them.
R is not going to be the best language for some of the questions (I see some very Python-suitable questions) but they should all be do-able in R, and I’d bet R beats some of the others in at least a few questions.
I’ll try to post a solution or two a week at least, along side my other projects. There’s about 500 questions available, presumably increasing in difficulty, so that’s quite a depth of material to cover.
If you know of a good improvement that can be made, by all means drop a line in the comments.
It should be noted however, as per the Project Euler site;
I learned so much solving problem XXX so is it okay to publish my solution elsewhere?
It appears that you have answered your own question.  It is often through the best of intentions in wishing to share our insights so that others can enjoy that moment too. Sadly, however, that will not be the case for your readers. Real learning is an active process and seeing how it is done is a long way from experiencing that epiphany of discovery. Please do not deny others what you have so richly valued yourself.
so if you’re planning on tackling these yourself, you’re better off steering clear of these posts for now and comparing solutions later. That’s what I’m doing at least.


Average User Score:
3.1
Mar 10, 2019
It's a very human exploration of both the main character and supporting characters. Captain Marvel knows how and when to use humor and you'llIt's a very human exploration of both the main character and supporting characters. Captain Marvel knows how and when to use humor and you'll find yourself laughing more often than during some of the more serious MCU movies. The story is developed will with good pacing and I found myself identifying with the lead throughout the film
You should go see this movie.… Expand


I'm A Celebrity's Roman Kemp promises to do late godfather George Michael proud
I’m A Celebrity…Get Me Out Of Here! contestant Roman Kemp has vowed to do his godfather the late, great George Michael, proud with his stint on the show.
The Capital FM DJ had close ties to the Careless Whisper singer as mum Shirley was a backing singer for Wham! and part of the duo Pepsi and Shirley in the 80s.
The 26 year-old has kept tight-lipped about the pop icon since his tragic death in 2016, but before heading into the jungle he did open up about their relationship.
‘The only memories I have of George [are] amazing,’ he shared. ‘His legacy and everything he left behind is amazing.
‘I was very fortunate with an amazing childhood and very privileged and I’m super pleased to have known him as closely as I did.’
When asked if he would be open to discussing the Faith hitmaker during his stint on the jungle, Roman didn’t rule anything out.
‘I think doing my job and doing radio, you’re constantly vulnerable,’ he continued. ‘And I’m a very open person, so there’s not any topics that I won’t really talk about in there.’
Advertisement Advertisement
And there will certainly be plenty of things Roman can discuss with his fellow campmates.
He’s going to be joining a star-studded line-up including reality TV legend Caitlyn Jenner, pop siren Nadine Coyle and ex-footballer Ian Wright.
One contestant, Rak-Su’s Myles Stephenson, has already vowed to grill Caitlyn over the infamous OJ Simpson trial.
The pictures come after ITV confirmed that live insects will no longer be used on any eating trials in the programme.
It was claimed that no celebs would be chowing down on any critters that were still crawling during the famous eating trials.
And bosses have now announced the change has been implemented and it will be permanent.
I’m A Celebrity…Get Me Out Of Here! returns on Sunday 17 November, at 9pm, on ITV.
Got a showbiz story?
If you've got a story, video or pictures get in touch with the Metro.co.uk Entertainment team by emailing us<EMAIL_ADDRESS>calling 020 3615 2145 or by visiting our Submit Stuff page - we'd love to hear from you.


--- layout: post esbma_id: 1644 title: Buying a Wii date: 2006-12-14 15:20:33 keywords: laughs ---
Looking for a Wii? Try Amazon.
One of my coworkers got a Wii and brought it to the office. I was hooked.
At first I didn't realize how difficult it was to buy a Wii. I simply knew that I wanted one. After several silly and futile attempts to find one in a retail store, I started thinking about other means.
Using the "advanced search" feature on eBay, I found somebody selling a Wii here in my town. The seller and I agreed to meet in person and close the deal with cash. He told me to be at a specific place on the University of Illinois campus, between two buildings, at 6:30pm.
I arrived at the designated location on time, but the seller wasn't there. As I stood around waiting, I realized I was standing in a dark alley at night with a roll of twenty dollar bills waiting for somebody I had never seen before. The whole thing was kind of creepy.
Around 6:45, a guy walked into the alley carrying a shopping bag. I knew at a glance that it was the seller.
He brought a goon with him, apparently for protection. The goliath was about nine feet tall and seemed like the sort of guy who could take the life of another human being in a completely nonchalant fashion. He was wearing a t-shirt which had some stains I assumed to be the blood from the previous victim of their scam.
When they walked into the alley, the seller looked me over. Staring coldly at me, he took out a mobile phone and dialed the number I had given him. When the phone in my hand rang loudly, he walked over, opened the bag, and said, "Here it is."
The goon grunted. Or growled. I couldn't tell which.
I suddenly wished I had brought my own goon. The idea never even occurred to me, but it wouldn't have mattered anyway. Everyone I know is short and capable of speech.
I asked the seller, "Do you mind if I take a look at it?"
He sneered, "Do you mind if I see the money?"
I traded him the wad of bills for the shopping bag. While he counted his loot, I opened the Wii box, glancing at the goon every so often and wondering if I had enough life insurance.
Everything seemed to be in order. I said so, and they walked away without another word. I watched for a moment, just to see if perhaps the seller would pull a turkey drumstick out of his coat and throw it to the goon as a treat.
I don't even know the seller's name, but I take some comfort in the fact that if I ever need to buy drugs or a gun or a Playstation 3, I already know the routine.


Test your knowledge in JavaScript fundamentals
1. In which HTML element do we put in JavaScript code?
2. Which HTML attribute is used to reference an external JavaScript file?
3. How would you write "Hello" in an alert box?
4. JavaScript is directly related to the "Java" programming language
5. A variable in JavaScript must start with which special character


David Brent: Life on the Road
David Brent: Life on the Road is a movie starring Ricky Gervais, Rob Jarvis, and Abbie Murphy. A camera crew catches up with David Brent, the former star of the fictional British TV series The Office (2001), as he now fancies...


SELENIUM SULFIDE - selenium sulfide lotion
Physicians Total Care, Inc.
A liquid antiseborrheic, antifungal preparation for topical application. Selenium sulfide has the molecular formula SeS2 and has a molecular weight of 143.09.
Selenium sulfide 2.5%; bentonite, citric acid, cocoamphocarboxyglycinate, ethylene glycol monostearate, fragrance, glycerol monoricinoleate, lauramide DEA, sodium lauryl sulfate, sodium phosphate (monobasic), titanium dioxide, and water.
Selenium sulfide appears to have a cytostatic effect on cells of the epidermis and follicular epithelium, thus reducing corneocyte production.
For the treatment of tinea versicolor, seborrheic dermatitis of the scalp, and dandruff.
Should not be used when acute inflammation or exudation is present as increased absorption may occur.
Application to skin or scalp may produce skin irritation or sensitization. If sensitivity reactions occur, use should be discontinued. May be irritating to mucous membranes of the eyes and contact with this area should be avoided.
When applied to the body for treatment of tinea versicolor, Selenium Sulfide Topical Suspension USP, 2.5% (Lotion) may produce skin irritation especially in the genital area and where skin folds occur. These areas should be thoroughly rinsed after application.
Studies in mice using dermal application of 25% and 50% solutions of 2.5% selenium sulfide topical suspension, over an 88 week period, indicated no carcinogenic effects.
WHEN USED ON BODY SURFACES FOR THE TREATMENT OF TINEA VERSICOLOR, SELENIUM SULFIDE IS CLASSIFIED AS PREGNANCY CATEGORY "C". Animal reproduction studies have not been conducted with Selenium Sulfide Topical Suspension USP, 2.5% (Lotion). It is also not known whether Selenium Sulfide Topical Suspension USP, 2.5% (Lotion) can cause fetal harm when applied to body surfaces of a pregnant woman or can affect reproduction capacity. Under ordinary circumstances Selenium Sulfide Topical Suspension USP, 2.5% (Lotion) should not be used for the treatment of tinea versicolor in pregnant women.
In decreasing order of severity: skin irritation, occasional reports of increase in amount of normal hair loss, discoloration of hair (can be avoided or minimized by thorough rinsing of hair after treatment). As with other shampoos, oiliness or dryness of hair and scalp may occur.
Selenium Sulfide Topical Suspension USP, 2.5% (Lotion) is intended for external use only. There have been no documented reports of serious toxicity in humans resulting from acute ingestion of Selenium Sulfide Topical Suspension USP, 2.5% (Lotion); however, acute toxicity studies in animals suggest that ingestion of large amounts could result in potential human toxicity. For this reason, evacuation of the stomach contents should be considered in cases of acute oral ingestion.
See application instructions on rear panel of this bottle. For treatment of dandruff and seborrheic dermatitis: For the usual case, two applications each week for two weeks will afford control. After this, the suspension may be used at less frequent intervals - weekly, every two weeks, or even every 3 or 4 weeks in some cases. The preparation should not be applied more frequently than required to maintain control.
For treatment of tinea versicolor: Apply to affected areas and lather with a small amount of water. Allow product to remain on skin for 10 minutes, then rinse the body thoroughly. Repeat this procedure once a day for seven days.
Selenium Sulfide Topical Suspension USP, 2.5% (Lotion) is available as follows:
4 fl oz plastic bottle - 118 mL (NDC 54868-1362-1).
Keep tightly capped. SHAKE WELL BEFORE USING.
Product may damage jewelry; remove jewelry before use.
For treatment of dandruff and seborrheic dermatitis of the scalp:
1. Massage about 1 or 2 teaspoonsful of suspension into wet scalp.
2. Allow to remain on scalp for 2 to 3 minutes.
3. Rinse scalp thoroughly.
4. Repeat application and rinse thoroughly.
5. After treatment, wash hands well.
6. Repeat treatments as directed by physician.
For treatment of tinea versicolor:
1. Apply to affected areas and lather with a small amount of water.
2. Allow to remain on skin for 10 minutes.
3. Rinse body thoroughly.
4. Repeat this procedure once a day for seven days.
For External Use Only. Do not use on broken skin or inflamed areas. If allergic reactions occur, discontinue use. Avoid getting shampoo in eyes or in contact with genital area as it may cause irritation and burning.
KEEP THIS AND ALL MEDICATIONS OUT OF REACH OF CHILDREN.
|
SELENIUM SULFIDE
selenium sulfide lotion | ||||||||||||||||||||
| ||||||||||||||||||||
| ||||||||||||||||||||
| ||||||||||||||||||||
| ||||||||||||||||||||
|
| Labeler - Physicians Total Care, Inc. (194123980) |
| Establishment | |||
| Name | Address | ID/FEI | Business Operations |
|---|---|---|---|
| Physicians Total Care, Inc. | 194123980 | relabel(54868-1362) |


Density, distribution function, quantile function and random generation for the bimodal skew symmetric normal distribution of Hassan and El-Bassiouni (2016) <doi:10.1080/03610926.2014.882950>.
| Version: | 0.1.0 |
| Depends: | R (≥ 3.3.0), gamlss.dist (≥ 4.3.1) |
| Imports: | MASS, gamlss |
| Published: | 2017-06-06 |
| Author: | Abu Hossain, Robert Rigby, Mikis Stasinopoulos |
| Maintainer: | Abu Hossain <a.hossain at londonmet.ac.uk> |
| License: | GPL-2 |
| NeedsCompilation: | no |
| CRAN checks: | gamlssbssn results |
| Reference manual: | gamlssbssn.pdf |
| Package source: | gamlssbssn_0.1.0.tar.gz |
| Windows binaries: | r-devel: gamlssbssn_0.1.0.zip, r-release: gamlssbssn_0.1.0.zip, r-oldrel: gamlssbssn_0.1.0.zip |
| OS X binaries: | r-release: gamlssbssn_0.1.0.tgz, r-oldrel: gamlssbssn_0.1.0.tgz |
Please use the canonical form https://CRAN.R-project.org/package=gamlssbssn to link to this page.


Motivated software engineer skilled in TypeScript & React with over ten years experience in the insurance industry. Proven ability to translate business requirements into code and test strategy. Quickly learns new technologies with a pragmatic approach to problem solving.
Member of scrum & kanban teams delivering greenfield, full stack, Node based projects for major high street retailers and internal UI systems.
Development and maintenance of Polaris ProductWriter Personal Lines Household schemes; Instrumental in establishing Personal Lines test strategy; assist in the maintenance and development of Sharepoint.
Management and allocation of departmental workflow; production of monthly key performance indicator statistics and call logging reports; auditing of telephone extensions and contract tariffs; circuit inventory management
2:2
Available upon request
I have a wide and varied interest in learning new coding languages in my spare time, I am most comfortable with front end web development using HTML; CSS; JavaScript; Bootstrap & React but I have also endeavoured to learn more full stack technologies such as Node.js; MongoDB; AWS & Azure cloud environments. I have also taken an interest in Linux distributions, Ubuntu in particular.
I am a long time video game enthusiast and often an early adopter of new technologies such as Apple TV; Sky Q; Smart meters etc. I also take a lot of satisfaction from being the relationship manager for the charity partnership and all the work we do to raise donations.


--- layout: post title: Portland Fix It Fair - Weeds date: '2009-02-07T10:57:17-08:00' tags: tumblr_url: http://alexhwilliams.tumblr.com/post/76443592/portland-fix-it-fair-weeds ---
Notes from Portlland’s 22nd Annual Fix It Fair class about weeds.
Weeds Are expensive. Weeds cause fires. They change the ecosystem.
Plant moss. It can tolerate more shade than grass. Enjoy the moss as a low-maintenance groundcover. It requires little, if any watering, no fertilizer or mowing.
Here are some of the most nororious weeds:
English Ivy
Don’t let the ivy get in the trees. It creates a lot of weight for a tree, makes them vulnerable Cut weeds at ankle and chest height. Don’t try to pull it out.
Clematis
Spreads easily. Seeds go everywhere, they attach to everything, spreading by wind and animals. Cut the vine at its base and dig it out. If you can’t dig it out, let it grow a bit, then hack it. You will defeat it.
Purple Loosestrife
Very difficult. Spreads through underground stems. It’s a rhizome. They invade ponds. They are almost impossible to eliminate once in the water. Do not pick them and bring them home.
Japanese Knotweed
This weed gets huge and is almost stimulated by cutting it. Places are getting buried by it. It’s growing along the Sandy River, almost burying it. Cut back the canes repeatedly throughout the growing season. Dig out the extensive root system only if you can sure to remove it all. Don;t let the roots get into the waterway. Shows why Multnomah County needs a “Weed Board.” It’s being discussed.
Himalayan Blackberry
It seems daunting but if you keep mowing it you can knock it back. Keep cutting it back, mow the canes down. Plant “overstory” plants to prevent it from growing in the future.
Scotch Broom
Produces tons of seeds. They spread through the air. Seeds can lay dormant for up
Reed Canary Grass
You see it a lot along any wetlands. Hand pull it.
Parrot’s Feather
Don’t dump aquarium water into ponds. Parrot’s Feather is spread by boats, humans, floods.
Butterfly Bush
Oh my gosh. We gave away a butterfly bush. It’s a weed that even diminishes butterfly populations. Butterflies are attracted to it but they don’t lay their eggs.
Garlic Mustard
This one is spreading rapidly on the East Coast. Yank it out and the seeds get back in the soil. You have to remove all the root fragments. If it infests, cut it to the ground.
Herb Robert
It’s also known as Stinky Bob. Spreads by seed. it actually expodes. It can spread 15-20 feet. Hand pull it before it flowers and seeds. Make sure no to confuse it with Bleeding Heart.
Kudzu
It’s called the plant that ate the South. It is edible bit we are not eating it fast enough. It rolls over everything. It is spreads by rhizomes. It grows really fast, like six inches per day. It could pose a greater danger than english ivy.
Tree of Heaven
Pull these plants as they are large enough to grasp. It has a seed pod that often will fall like a spiral toward cracks in the sidewalk or along your house, pulling the foundation.
Pokeweed
Berries are highly poisonous. It’s a crazy purple. It’s used as coloring for dyes. Cut it before it seeds.
Periwinkle
We have periwinkle. It’s a garden thug. It takes over. Dig it up.
Bamboo
Cut it off. Cut it down. Water the area. Cut it down again.
In review
Don’t buy weeds.Take a weed list with you when you go to purchase plants. This helps you avoid purchasing plants that are already causing problems. Avoid buying wildlfower mixes or make sure you check the contents. Many contain aggressive or invasive non-native species.


Yes.
You have reached the end this chapter. You may wish to review the following. Click on a blue subject that interests you to go to where it was discussed. To get back here, click on the "back arrow" button of your browser.


---
layout: post
title: Cisco IPS Manager Express
date: '2009-06-10T07:05:00.005-06:00'
author: Jay Swan
tags:
modified_time: '2009-12-15T10:37:54.788-07:00'
blogger_id: tag:blogger.com,1999:blog-5029689981158113588.post-6846693575421009758
blogger_orig_url: http://unroutable.blogspot.com/2009/06/cisco-ips-manager-express.html
---
I've been doing Cisco IDS/IPS stuff recently for the first time in a long while. If you haven't tried Cisco's new free IPS Manager Express application, check it out. It makes IDS/IPS event monitoring and management reasonably useful and almost pain-free. The interface is much more intuitive that other Cisco IDS/IPS GUI products. The only problem is that the current version supports only 5 sensors; supposedly this will increase in a future release.
Added 12/15/09:
The latest version of IME supports 10 sensors.


Success!
Your keys were successfully uploaded.
You can close this window.
Something went wrong...
You can close this window.
Failed to upload
key


What makes a great event? Music? Flowers? Food? A great event is made by the support of someone who is organized, works well under pressure, and understands the timing of elements of your event. I have event planning experience in a variety of areas: wedding planning; retreat and camps; and school events such as a Science Fair or World Culture Day.


Pat's Salmon Cookies
Cookies with just a hint of fishy goodness!
Our story
About 3 years ago, my family and I had this wonderful idea. We were at a coffee shop in the Seattle, WA area, watching the ferry boats go by, and started talking about the region. Seattle is a beautiful area of the world, and once of our most beloved fish (the Salmon), is prevalent everywhere you look in the city. Well... almost everywhere you look.
We started thinking more seriously about this idea, a recipe that would incorporate our beloved Salmon into a delectable coffee house pastry. It took a few months of experimenting in the kitchen and tweaking recipes, but eventually we FINALLY had it! The Salmon cookie! Once we had the recipe, we had to create our own cookie cutter that would be as visually appealing to our customers as our hint-of-fish cookies had to their tastebuds.
And so we began! With the right cookie cutter, we were able to make the most amazing looking cookies! Although we are a new company, we've had a tremendous amount of growth, and now have locations in five cities in as many countries across the world! The brick and mortar locations are a popular place for area espresso stands to buy their quantities they are able to offer at their neighborhood stands (with permission, of course!). We are happy to have our neighboring cities take an interest in our delicious, yet eclectic, tasty little morsels.
We are still a growing business! If you have any feedback, we would love to hear about it. In the meantime, in our Seattle location, not only do we sell our fabulous cookies, but we have some amazing t-shirts if you'd like to show your support for Seattle's marvelous unofficial favorite fish, the salmon!
- Seatlle Location:
102 Pike St, Seattle, WA
Hours: 6am-8pm
- Tokyo
2 Chome-19-23 Aobadia, Merugo City, Tokyo, Japan
Hours: 6am-8pm
- Dubai
Umm Hurair 2Dubai Healthcare City - Dubai - United Arab Emirates
Hours: 6am-8pm
- Paris
26 Avenue de l'Opera, 75001 Paris, France
Hours: 6am-8pm
- Lima
Av Paseo de la Republica 144, Lima 15001, Peru
Hours: 6am-8pm


Les Miserables (1998) 3 stars out of 4
The newest screen version of Les Miserables is like its hero, Jean Valjean, strong and solid.
This adaptation of the Victor Hugo classic about social injustice and redemption is a well-acted, moving movie.
But looming over this production, like a giant elm keeping it always in shadow, is the very popular musical stage version of the book. For more than 10 years people around the world have become familiar with Hugo's story through this extravaganza. They know the words and they hum the music.
However, that should not stop anyone from enjoying director Bille August's newest incarnation. Only don't expect any surprises.
Jean Valjean (Liam Neeson) is paroled after 19 years in prison for stealing food. He finds a night's sanctuary at the house of an archbishop, whom he repays for his kindness by stealing his silver.
When the archbishop refuses to send Valjean back to jail, telling his captors that he made a gift of the silver to the ex-con, Valjean is freed and his life transformed. The archbishop tells the confused Valjean that he has ransomed his soul for God, and that he must now walk the path of righteousness.
Neeson is a wonderful Valjean. His bulk conveys the weight of a man who is striving to do good, to compensate, not only for the injustice in the world, but for his own past.
Neeson's Valjean is a man always looking over his shoulder. He is striving for a bright, peaceful future for himself and adopted daughter, Cosette, while continually running from his past.
That past is represented by Javert (Oscar-winner Geoffrey Rush), the police inspector who ferrets out Valjean's secret and vows to bring him to justice.
Rush's interpretation of Javert is the movie's only drawback. Rush's Javert is too implacable, too grim. The tragedy of Javert is that he is a man for whom the law is everything. He is so blinded by adhering to the letter of the law that he forgets that law is tempered by justice.
The audience should feel pity, even a bit of compassion, for Javert and his merciless obsession with Valjean. But Rush refuses to allow that. His inspector never reveals the chink in his armor, thus when his end comes, the audience feels relief instead of loss.
Javert is a character to be pitied not scorned.
Clare Danes is wholesome as the grown-up Cosette, who while loving her adopted parent, fights the restraints he imposes on her to protect their lives.
Uma Thurman's Fantine is another figure who is trampled under the weight of society's injustices. Dismissed from her job because she has an illegitimate daugther, she is forced into prostitution to earn money for her daughter's upkeep.
A haunting score by the usually bombastic Basil Poledouris adds a touch of yearning to Les Miserables.
Les Miserables has been filmed many times both in the United States and France. Thus, because of its various screen incarnations and the worldwide popularity of its musical cousin, it is a story that offers no surprises.
August, wisely, sticks to the basic text. Les Miserables is nothing more than a very good adaptation of a classic novel. It is literate, well-crafted entertainment.
And until that day that the film version of the musical arrives, this production should serve nicely.
Bob Bloom is the film critic at the Journal and Courier in Lafayette, Ind. He can be reached by e-mail at<EMAIL_ADDRESS>or at<EMAIL_ADDRESS>cb
Carol Bloom of Bloom Ink Publishing Professionals 3312 Indian Rock Lane West Lafayette, IN 47906-1203<PHONE_NUMBER> fax<PHONE_NUMBER><EMAIL_ADDRESS>Committed to Lifelong Learning through Effective Communication
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


Brew day is well underway! Already bottled half the batch of red, brewed the winter spiced ale yesterday, and plotting the habanero amber.
10/10/2009, 12:18:59 PM
Favs: 0
Retweets: 0
link--- layout: tweet ---
Brew day is well underway! Already bottled half the batch of red, brewed the winter spiced ale yesterday, and plotting the habanero amber.
10/10/2009, 12:18:59 PM
Favs: 0
Retweets: 0
link


Using virtual namespace feature, users can instantly connect to their existing data repositories such as on AWS, Azure, or any other object storage and create a single unified view of all the data via a unified AWS S3/Azure Blob API.
It means that you can easily run the same workload with the same data repository, no matter where it is while saving the migration project and cost.
The data is available immediately after the configuration and doesn't need any synchronization.
Below is an example of a namespace that aggregates data from AWS S3 and Azure, and by default will write to Azure.
Steps:
1. Start with adding connections to your existing cloud storage accounts.
Navigate to Accounts -> My Connections and add connections.
2. Navigate to resources -> namespace resource and click on "Create Namespace Resource" button in order create a new namespace resource, which is an AWS S3 bucket or blob container native storage.
This is an example of two resources, one is AWS and the second is on Azure.
3. Now create a namespace bucket, that will link these two accounts into a single bucket in NooBaa.
Navigate to Buckets -> Namespace Buckets and click on "Create Namespace Bucket" button in order to create one.
Select the relevant buckets you want to point to (no sync or data migration will happen). Also, select the target for the write operation for this bucket.
Every application that will connect to NooBaa, to bucket aws-to-azure will be able to read an object from both locations, and while writing new data, it will be written to the default target, which is Azure in this case.


Sorry, your browser does not support JavaScript!
Toggle navigation
MwIssues Explorer
Help
Something went wrong
Error text
Close
Please wait...
Authentication
User name
API Key
Remember my credentials
Login
Anonymous login
Filter
New
Confirmed
Pending
Resolved
Scene :
Reporter :
Assignee :
Issue list
Refresh
Please wait...


Keep all your products and images in one place. Our unique system allows you to manage your entire market in one place.
Automatically import your inventory and pricing, and immediately add them to your web store.
Whether you want to manage a web store, or build a supply chain, we've got the tools you need.
Once you're in the game, we can help you track the competition, and generate reports instantly.


|
| Be the first one to know |
Join our mailing list to receive updates via e-mail when we add new Questions, Resumes or Cover Letters to this site. ( Max. 1 e-mail per week ).
|
|
Microsoft Interview Questions
Interviewing at Microsoft used to be different from Interviwing at other companines. But
with the advent of new economy and Internet things have changed dramatically in past few years.
More and more companies are adopting Microsoft Interviewing philosophy and hence their questions.
Here is a typical set of Interview questions (submitted by - Andrew Smith) asked for an entry level
Software Design Engineer(SDE) or Internship positions.
- You have 5 jars of pills. Each pill weighs 10 gram, except for contaminated pills contained in one jar, where each pill weighs 9 gm. Given a scale, how could you tell which jar had the contaminated pills in just one measurement?
- One train leaves Los Angeles at 15 MPH heading for New York. Another train leaves from New York at 20mph heading for Los Angeles on the same track. If a bird, flying at 25mph, leaves from Los Angeles at the same time as the train and flies back and forth between the two trains until they collide, how far will the bird have traveled?
- Imagine that you have 26 constants, labelled A through Z. Each constant is assigned a
value in the following way: A = 1; the rest of the values equal their position in the
alphabet (B corresponds to the second position so it equals 2, C = 3, etc.) raised to the
power of the preceeding constant value. So, B = 2 ^ (A's value), or B = 2^1 = 2. C = 3^2
= 9. D = 4^9, etc., etc. Find the exact numerical value to the following equation:
(X - A) * (X - B) * (X - C) * ... * (X - Y) * (X - Z)
- How would you find a cycle in a linked list? Try to do it in O(n) time. Try it using a constant amount of memory.
- Design a memory management scheme.
- Implement an algorithm to reverse a doubly linked list.
- A square picture is cut into 16 squares and they are shuffled. Write a program to rearrange the 16 squares to get th
e original big square.
- Write C code to implement strtok() 'c' library function.
-
The Web can be modeled as a directed graph. Come up with a graph traversal algorithm.Make the algorithm non-recursive an
d breadth-first.
- How would you implement a hash table ? How do you deal with collisions.?
For more Microsoft type technical interview questions, browse throguh the Interview Question
s and Answers area on this site( escpecially questions in Analytical and Algorithm sections). Some of the personal
interview type questions generally asked by employers are listed under common interview questions.
|


Dear {0},
Thank you very much for contacting me.
I received your email message below :
{1}
I will try to contact you as soon as possible.
Best Regards.
Mohamed Barrouh.
Senior Java Software Engineer
Email<EMAIL_ADDRESS>Phone : +212643696584
Website : www.barrouh.com
GitHub : www.github.com/barrouh


12.2.1. Effective Grain Boundary Diffusivity Calculator¶
Author: Jie Deng
Calculates the effective diffusivity in a grain boundary network with two types of randomly distributed grain boundaries.
Version 1.3 - published on 21 Feb 2014
Look for a new version in late 2014
- You must download and unzip the MAST tar.gz file from https://github.com/uw-cmg/MAST/releases in order to access the source code, which is in MAST/standalone/gbdiff, and will likely need to be recompiled for your machine.
This tool calculates the effective diffusivity in a grain boundary network represented by a three-dimensional Voronoi diagram. Two types of grain boundaries with different diffusivities are randomly distributed in the domain. The effective diffusivity is calculated using the mean squared displacement method, where periodic boundary conditions are applied in all directions. Users are free to choose the fraction of each grain boundary type as well as the activation energy and pre-factor for each grain boundary diffusivity.
12.2.2. Cite this work¶
Researchers should cite this work as follows:
Jie Deng (2014), "Effective Grain Boundary Diffusivity Calculator," https://materialshub.org/resources/diffcalc.
@misc { 30,
title = {Effective Grain Boundary Diffusivity Calculator},
month = {Jan},
url = {https://materialshub.org/resources/30},
year = {2014},
author = {Deng , Jie}
}


{% markdown %}
1. The two-part composite **wing-sail** and flaps can be trimmed separately using hydraulics. With technology borrowed from the aircraft industry, the air flow around the wing creates more pressure on one side than the other, creating lift. This can drive the boat three times the speed of the prevailing wind
2. The composite **headsail** (jib) comes in three sizes for different wind strengths: 18, 25 and 36 square metres
3. The crew move across the **trampoline** between port and starboard crew pods, according to direction of tack. The controls are duplicated in both hulls. Most teams operate grinders with their arms, but some are experimenting with a ‘bike’ setup to take advantage of stronger leg strokes
4. Two linked **rudders** control direction from the helmsman’s steering wheel, and can be individually adjusted forward or aft, depending on tack
5. The **daggerboards/foils** are the key to the massive speed increase seen since their introduction in 2013. The foils can be raised by ‘paddles’ on the steering wheel, to lift the boat clear of the water when speeds exceed 16 knots (18mph), this is known as ‘foiling’. Further adjustments can be made to the cant or lateral angle of the foil.
{% endmarkdown %}


Hello, {{ app.patient.display_name }}
Your appointment has been accepted by {{ app.doctor.display_name }}
The appointment will take place on {{ app.get_scheduled }}
When the time comes, the appointment will be able to be joined on the appointment page
Hope to see you there!


Ruby
Ruby is a dynamic, reflective, object-oriented, general-purpose programming language. It was designed and developed in the mid-1990s by Yukihiro "Matz" Matsumoto in Japan.
Ruby on Rails
Ruby on Rails, or simply Rails, is a web application framework written in Ruby under the MIT License. Rails is a model–view–controller (MVC) framework, providing default structures for a database, a web service, and web pages
HTML5 & CSS3
Along with HTML and JavaScript, CSS is a cornerstone technology used by most websites to create visually engaging webpages, user interfaces for web applications, and user interfaces for many mobile applications.
JavaScript
JavaScript is prototype-based with first-class functions, making it a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles.