text:
This Sunday is April Fool's Day, so get your pranks ready! There's some debate as to the origin of this "holiday", but many believe that it started in France in 1582 when the country adopted the Gregorian Calendar. Under this new system, New Year's Day changed from the end of March to January 1st. Some people out of jest and stubborness, continued to celebrate the New Year on April 1st. These people quickly became victims of pranks and jokes, as the majority of society thought their actions were foolish.
In modern society, elaborate advertising hoaxes for major brands are commonplace, as are pranks pulled by media outlets. Here are few of our favorite pranks from recent years, tell us some funny ones you've pulled on your friends, family, or co-workers!
- In 2010, Google announced it had released an android app called "Google Translate for Animals". Check out the video: http://www.youtube.com/watch?v=3I24bSteJpw&feature=player_embedded
- In 2009, Internet travel company Expedia offered flights to Mars. The site, which featured an ad for the flights, includes details on hotels and activities on Mars as well as explanation about life and weather on Mars. You can even choose your spacecraft.
- In 2009, The Guardian newspaper in England announced that it would be the first newspaper in the world to be published exclusively via Twitter. Their reasoning? To "consolidate their position at the cutting edge of new media technology"
- In 2011, Irish airline Ryanair, annouced that they would offer "child-free flights" beginning in October. The Head of Communications, Stephen McNamara, released this statement, "When it comes to children we all love our own but would clearly prefer to avoid other people's little monsters when travelling. While half our passengers would like us to divide our cabins up into 'adult' and 'family' areas it is not operationally possible due to our free seating policy, with optional priority boarding"
- In 2011, Kodak added the feature of "Relationshifffft", where you can remove your exes from your photos.


text:
Who would win this battle? It's your turn to vote and decide! You can't blame us for the outcome of this battle. It's all up to you and your fellow readers. Vote. Get your friends and enemies to vote too. If you aren't sure about the abilities of a particular character, consult your friendly neighborhood wikipedia.
You can click the voting link to check the results throughout the week. Then come back Friday, September 29 for the final results and the next round of voting.

subset: commoncrawl


text:
Sapphire HD6950 2GB DiRT3 Toxic Edition Review
Just over a month ago, we reviewed a 2GB HD6950 from Sapphire that included a free copy of Colin McRae's DiRT3, an exciting rally racing game that many love, including me personally. The card did very well in performance, temperature, and power draw, and is still available at that great Sapphire price point — especially coming with a free game. Anyways, we all know that Sapphire, along with every other manufacturer, doesn't like to end its cards in stock form, and that's why we see Sapphire's "Toxic" editions hit the market shortly after the original versions. The "Toxic" edition of the HD6950 enjoys a slight overclock of 80MHz on the core and 50MHz on the memory, bringing the overall speeds up to 880MHz and 1300MHz, respectively. While that may not seem like much of a boost, this small bump in clock speed produces a very noticeable improvement — especially for still being in, more or less, OEM form. Most users will continue to push these cards far past what Sapphire produces and enjoy the challenge of getting the most from their hardware. Sapphire's "Toxic" stamp generally means that the card also gets a different, special edition look than the previous one, along with a different cooling setup as well.
It's been quite a while since having my hands on a Sapphire card and I'm looking forward to seeing what it can do. Judging by the results from the stock version, I don't think that I'll be let down! In this review, we will take an up-close and personal look at Sapphire's HD6950 2GB DiRT3 Toxic Edition from unboxing, checking it out under the hood, and putting it through the gauntlet of the latest, most back-breaking games. We will also measure how efficient the card is, which includes recording power draw and temperatures. All the aforementioned testing will be performed in both stock and overclocked scenarios. More details and explanation will follow on each of the testing pages.
Closer Look:
The Sapphire HD6950 2GB Toxic Edition is packaged very similarly to that of the original, stock-clocked HD6950. The difference is found in the graphics and printing of the box itself, where some hooded being is carefully holding a glowing orb. The printing itself is highly reflective and almost looks like it was printed on a mirror! The rest of the information on the front includes its 2GB capacity, that's it's an OC edition, and that it includes a copy of DiRT3. Also stated on the front is the use of a dual cooling fan, which may be similar to that of the previous stock HD6950 we reviewed last month. The rear of the box lists a load of features that this card brings with it, including 3D gaming support, Eyefinity support, and several other similar features. A small note at the bottom mentions that the box is constructed from 100% recycled materials, which is good to see. The top, sides, and bottom show no information other than logos, model numbers, and brand names.
Inside of the outer, colorful sleeve is a plain brown cardboard box that houses the card and the accessories. Opening this secondary box will reveal the card itself, shrouded by a protective static-proof bag and supported by more recycled cardboard. The static-proof bag is sealed shut at one end with a simple piece of tape, an easy and cheap measure to prevent the back from opening during shipping and handling. Underneath the video card's "tray", if you will, is another box — inside of which is the location of all the included accessories. These accessories include the general driver CD, user manuals, power adapter cables, CrossFire bridge, DisplayPort adapter, DVI to VGA adapter, warranty card, a DisplayPort cable, and of course, the DiRT3 registration material. It's certainly nice to have the mini DisplayPort adapter included, as I have found not all cards come with this!
With everything out of the box, it's now time to take a closer look at the card itself and explore what external features it offers, its cooler, and whatever else may be worth pointing out!


text:
Hacker News, Reddit, Stack Overflow Stats
GitHub Stats
No public GitHub repository stats available
No public GitHub repository stats available
What is Go?
Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel type system enables flexible and modular program construction. Go compiles quickly to machine code yet has the convenience of garbage collection and the power of run-time reflection. It's a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language.
What is Objective-C?
Objective-C is a superset of the C programming language and provides object-oriented capabilities and a dynamic runtime. Objective-C inherits the syntax, primitive types, and flow control statements of C and adds syntax for defining classes and methods. It also adds language-level support for object graph management and object literals while providing dynamic typing and binding, deferring many responsibilities until runtime.
What is Common Lisp?
Lisp was originally created as a practical mathematical notation for computer programs, influenced by the notation of Alonzo Church's lambda calculus. It quickly became the favored programming language for artificial intelligence (AI) research. As one of the earliest programming languages, Lisp pioneered many ideas in computer science, including tree data structures, automatic storage management, dynamic typing, conditionals, higher-order functions, recursion, and the self-hosting compiler. [source: wikipedia]
Want advice about which of these to choose?Ask the StackShare community!
Ask a Question
What companies use Go?
733 companies on StackShare use Go
What companies use Objective-C?
791 companies on StackShare use Objective-C
What companies use Common Lisp?
3 companies on StackShare use Common Lisp
What tools integrate with Go?
51 tools on StackShare integrate with Go
What tools integrate with Objective-C?
12 tools on StackShare integrate with Objective-C
What tools integrate with Common Lisp?
1 tools on StackShare integrate with Common Lisp
What are some alternatives to Go, Objective-C, and Common Lisp?
Latest News
Go 1.10 is released
February 16, 2018
Hello, 中国!
January 22, 2018
Participate in the 2017 Go User Survey
November 16, 2017
Now on iOS: one-tap access to real-time commute info...
February 15, 2018
Lose the Cables: Make Deploying to an iOS or tvOS De...
February 02, 2018
Upload App Previews with Transporter
January 31, 2018
My new favorite programming language
January 12, 2018 15:37
Go has been a joy to work with. Performance is often 30x of what we used to see with Python. It's a performant and productive programming language: https://getstream.io/blog/switched-python-go/
eboudrant uses Go
Web services for http://muzeighibli.net
tmaiaroto uses Go
Go is used for the server side code that harvests data, generates reports, and hosts the API for interacting with Social Harvest. It is the major piece of technology used to make Social Harvest possible.
Apcera uses Go
The majority of all code written at Apcera is in Go!
Zinc uses Go
We wrote our own image processing, resizing, and snapshotting service in Go to allow our clients to send photos and GIFs to each other. Files are stored in S3, resized on the fly using OpenCV, and then cached in GroupCache before being served to clients.
Go allows it all to be quite fast and efficient, and entirely non-blocking on uploads!
Karma uses Go
The first time I actually started using Go was for software on our devices. So on our hotspots we have some custom software running in the firmware. For the first device, that was actually completely built by our manufacturer. But for the second generation most of the parts are built by us in-house and we needed a way to quickly develop software for the device. But we don't have any C programmers in-house, so we were actually looking for something that basically sits in between the friendliness of Ruby, but the performance and the ability to be deployed on an embedded system which you get with C. That's basically what led us to Go and it's been awesome for that. It works so well and so great. Since it works so great, it pushed us into looking into whether we should start using this for some backend services as well.
Clever uses Go
We're huge fans of Go. We've been porting code into Go for performance and correctness reasons, and most new development is done in Go.
STILLWATER SUPERCOMPUTING INC uses Go
We are prototyping custom API services as custom Go programs.
nalexander21 uses Go
Creating high performance servers and server software.
dpup uses Go
Most new projects I start are written in Go.
Refractal uses Go
For some of our more taxing parts of our applications, something able to handle high I/O load quickly and with fast processing is needed. Go has completely filled that gap, allowing us to break down walls that would've been completely impossible with other languages.
acook uses Go
A handwritten Go parser takes the human-readable representation and generates
blacklight bytecode out of it.
blacklight leverages the concurrency and garbage collection features of Go.
iarenzana uses Go
Language of choice. No question.
theskyinflames uses Go
High performance backoffice integration systems, with more than 70 millions of dayly synchronizations and peaks over 100k synchronizations per minute.
codebeat uses Go
Go powers most of our backend. We primarily like Go due to it's memory efficiency, fast compilation times, excellent concurrency support and great tooling.
Goyoboard uses Go
Simple but powerful language to create system and network tools that we utilize. Compiled program makes it easy to deploy due to no complex dependencies.
We use golang to create image and video preprocessor, utility for health check + autoscaling and many others
danjac uses Go
Backend API and command line utilities
hyper-carrot uses Go
I'm a big fan of Golang. I use Golang in most time. In addition, The most software projects of me are written by Golang.
itzMe uses Go
The core language we develop the itzMe platform in.
Giant Swarm uses Go
Most of the building blocks of our microservice platform are written in Go
Broadsheet uses Go
Quick prototyping and development of microservices for side projects.
InsideSales.com uses Go
The large majority of the microservices and workers in our latest product's architecture are written in Go.
mkocs uses Go
Go was used as the language for the backend. It's fast, fun to write and proved really useful throughout the entire project.
tj uses Go
All Lambda functions are written in Golang, managed via https://github.com/apex/apex.
softwareantelope uses Go
Compact web applications, more secure and faster processing, building sophisticated multifaceted applications with multiple servers working together.
InApplet uses Go
Processos de DevOps
Loog uses Go
Our platform is developed in Go.
CB Insights uses Go
We use Go to build and scale our application API
mfbx9da4 uses Go
Would love to use more professionally!
jamescth uses Go
It's my main dev language now.
Postverta Inc. uses Go
Our backend API server and proxy server are written in Go, because it scales very well with the number of incoming or pending requests.
Cirrus Labs uses Go
Cirrus CI agent that executes tasks on a host VM or a container is written in Go so it is a self-contained static executable that can be executed on Unix and Windows.
Micrantha uses Go
high concurrency and dead simple to write
Stream uses Go
Go is great for realtime. The gorilla websocket library is excellent. Also the low memory consumption of a single goroutine means you can easily handle many WS connections on a single node.
DerEnderKeks uses Go
Go provides the backend of Gofus
Diggernaut LLC uses Go
Our main web scraping engine is built usign Golang because of the way how efficiently and fast this language is. Also out compilation facility let people who dont know Golang build fast as flash scrapers to run ourside of our platform without any knowledge in programming in Golang.
Flutter Health Inc. uses Go
The following basic API endpoints are implemented on the server written in Go:
twizzledink uses Go
We're using go to create fast, massively scalable data ingestion pipeline from IoT edge devices.
Paybox Co., Ltd. uses Go
We love gopher!
janos uses Go
Backend is based on boltdb for storage, gRPC for communication and Go standard packages.
jcburley uses Go
Have worked on the c2go transpiler and on Joker, a Clojure interpreter written in Go. Used the former to do performance analysis of Go versus C.
royolsen uses Go
Service components
Instacart uses Objective-C
Basically, the trajectory was we had our iOS app, which started out native, right? It started as a native app, and then we realized you have to go through a review process and it's slow, and at a very early stage, it made sense for us to make it a wrapped web view. Basically, the app would open, and it would be a web view inside of it that we could iterate on quickly and change very rapidly and not have to wait for app store view process to change it. It wasn't totally a native experience, but it was as actually a pretty good experience and lasted for a very long time and was up until recently the foundation of our current mobile web experience, which is different from our app situation. So for a long time, basically, our app store iOS Instacart app was a wrapped web view of just our store, a condensed version of our store, which meant that we could add things. We could change sales. We could change the formatting. We could change the UI really fast and not have to worry about the app store review process.
This all changed about a year ago, I would like to say, at which point it became a totally native app. We felt comfortable enough with the product and all the features that we made it a native experience and made it a fully featured app.
Brounie SA de CV uses Objective-C
Native IOS apps
Karma uses Objective-C
Our mobile apps are all native. Objective-C and Java.
EverTrue uses Objective-C
The iOS version of our native apps.
nrise uses Objective-C
iOS 개발을 위해 사용하는 언어입니다. 조만간 swift 로의 포팅을 생각중입니다.
NowKash Inc uses Objective-C
in conjunction with Meteor and to deploy on IOS
philipbarrar uses Objective-C
iPhone application
pointum uses Objective-C
The app was initially written in Objective-C.
SmartLogic uses Objective-C
We like to go native with iOS development, and Objective-C has been the only game in town until recent introduction of Swift. We're keeping an eye on Swift, but we aren't giving up on the [old way:to do:things]!
jhabdas uses Objective-C
Access Platform APIs and bridge to JS
douglasresende uses Objective-C
I have a basic knowledge.
Refractal uses Objective-C
While the majority of our stack is now using Swift, we still love Objective-C in many cases, especially low-level software manipulation, where it's just easier. It doesn't hurt that a lot of iOS/OS X Libraries out there are written in it either.
jessearmand uses Objective-C
iOS app
Bubble uses Objective-C
Front, with Xcode
megastep uses Objective-C
The entire app was written in Objective-C.
Markremark uses Objective-C
Programming language
Undisclosed, Do Not Contact or Spam Please uses Objective-C
App development for iOS.
andrewKing03 uses Objective-C
Building iOS apps
Vaultize uses Objective-C
iOS and OS X apps.
DailySMSCollection uses Objective-C
Promethean TV uses Objective-C
PrometheanTV provides SDKs for IOS devices including support for the Objective-C language.
Nayemk uses Objective-C
I'm jobs I'm software engineer


text:
The J2EE agent AMAgent.properties configuration file is a text file of configuration properties that you can modify to change J2EE agent behavior.
The content of the J2EE agent AMAgent.properties configuration file is very sensitive. Changes made can result in changes in how the agent works. Errors made can cause the agent to malfunction.
This section describes the most important details of the J2EE agent AMAgent.properties configuration file, such as how specific properties can be modified to produce specific results. The topics described are typically those of greatest interest in real-world deployment scenarios. This section does not cover every property in the file. For a list and description of every property, see Appendix B, J2EE Agent AMAgent.properties Configuration File in Policy Agent 2.2.
The following is the location of the AMAgent.properties file;
For more information about the Policy Agent 2.2 directory structure, see J2EE Agent Directory Structure in Policy Agent 2.2.
List Constructs in the J2EE AMAgent.properties Configuration File
Map Constructs in the J2EE AMAgent.properties Configuration File
Certain property keys in the J2EE agent AMAgent.properties configuration file are hot-swap enabled. The value for these keys, when altered, are dynamically loaded by the agent such that it is not necessary to restart the deployment container for these changes to take effect. However, in cases where the property is explicitly identified as not enabled for hot-swap or in cases when the hot-swap mechanism is disabled on the system, the deployment container must be restarted for the changes to take effect.
When the agent is deployed on a deployment container where Access Manager has been configured, the hot-swap mechanism is disabled by default and cannot be used.
The hot-swap mechanism is controlled by the following configuration property:
The valid values for this property is any unsigned integer including 0, which indicates the amount of time in seconds after which the agent will check for changes to the configuration. A setting of 0 disables the mechanism. By default, this mechanism is set to 0 and is, therefore, disabled.
This mechanism is primarily provided to facilitate the development and testing of your application in a controlled development or test environment. It is strongly recommended that this feature be disabled for production systems to ensure optimal utilization of system resources. Also, in a production system by disabling this feature, any accidental changes to the agent configuration will not take effect until the deployment container has been restarted.
The property that controls the hot-swap mechanism itself is hot-swap enabled. This means that if the hot-swap mechanism is enabled and you change the value of this property, the new value will take effect after the last hot-swap load interval expires. This can be therefore used to dynamically disable the entire hot-swap system. For example consider the following situation:
The deployment container is started with the load interval set to 10 seconds. Therefore, changes made to the agent configuration are picked up by the agent every 10 seconds.
If you modify the load interval value while the deployment container is running and set it to 0, when the last load interval completes, the agent will pick up this new value. Since the value is set to 0 the agent will disable the hot-swap mechanism for the entire system.
Once disabled, the configuration changes made in the J2EE agent AMAgent.properties configuration file will not be sensed by the agent. Therefore, even if you reset the value of this property now to any other number, it will not enable the hot-swap mechanism unless the deployment container is restarted.
When the value of the load interval is set to 0 during the startup of the deployment container, the hot-swap mechanism will be disabled and cannot be enabled without restarting the server and ensuring that this value is set to a value greater than 0.
Certain property keys in the J2EE agent AMAgent.properties configuration file are specified as lists. A list construct has the following format:
<key>[<index>] = <value>
The configuration key (name of the configuration property)
A positive number starting from 0 that increments by 1 for every value specified in this list.
One of the values specified in this list
Properties that are specified in this manner must follow the preceding format, otherwise they will be treated as invalid or missing properties.
More than one property can be specified for this key by changing the value of <index>. This value must start from the number 0 and increment by 1 for each entry added to this list.
If certain indices are missing, those indices are ignored and the rest of the specified values are loaded at adjusted list positions.
Duplicate index values result in only one value being loaded in the indexed or adjusted indexed position.
com.sun.am.policy.example.list[0] = value0 com.sun.am.policy.example.list[1] = value1 com.sun.am.policy.example.list[2] = value2
Certain property keys in the J2EE agent are specified as maps. A map construct has the following format:
The configuration key (name of the configuration property)
A string that forms the lookup key as available in the map
The value associated with the name in the map
Properties that are specified in this manner must follow the preceding format, otherwise they will be treated as invalid or missing properties.
For a given <name>, there may only be one entry in the configuration for a given configuration key (<key>). If multiple entries with the same <name> for a given configuration key are present, only one of the values will be loaded in the system and the other values will be discarded.
com.sun.am.policy.example.map[AL] = ALABAMA com.sun.am.policy.example.map [AK] = ALASKA com.sun.am.policy.example.map [AZ] = ARIZONA
Certain property keys in the J2EE agent AMAgent.properties configuration file can be configured for specific applications. Therefore, the agent can use different values of the same property for different applications as defined in the configuration file. Properties that are not configured for specific applications apply to all the applications on that deployment container. Such properties are called global properties. An application specific property has the following format:
The configuration key (name of the configuration property)
The application name to which this configuration belongs. The application name is the context path of the application without the leading forward slash character. In case when the application has been deployed at the root-context of the server, the application name should be specified as DefaultWebApp.
The value used by the agent to protect the application identified by the given application name
When an application specific configuration is not present, the agent uses different mechanisms to identify a default value. Configurations are possible where the default value is used as the value specified for the same key without any application specific suffix [<appname>]. The following settings for a single property serve as an example:
com.sun.identity.agents.config.example[Portal] = value1 com.sun.identity.agents.config.example[DefaultWebApp] = value2 com.sun.identity.agents.config.example = value3
The preceding example illustrates that for applications other than the ones deployed on the root context and the context /Portal, the value of the property defaults to value3.
Application Specific configuration properties must follow the rules and syntax of the map construct of configuration entries.
com.sun.identity.agents.config.example[Portal] = value1 com.sun.identity.agents.config.example[BankApp] = value2 com.sun.identity.agents.config.example[DefaultWebApp] = value3
The agent installation program and the J2EE agent AMAgent.properties configuration file allow you to set the agent filter in one of the five available modes of operation. Depending upon your security requirements, choose the mode that best suits your site's deployment. The following configuration property is used to control the mode of the agent filter:
The value for this property can be one of the following:
Regardless of what mode the agent filter is operating in, the agent realm will continue to function, if configured. This can therefore lead to a situation where the agent realm component may malfunction or may result in the negative evaluation of J2EE security policies configured in the application's deployment descriptors or being used through the J2EE programmatic security API. To avoid this, you may disable the agent realm component, if necessary. The sections that follow describe the different agent filter modes and also tell you how to disable the agent realm.
This mode of operation effectively disables the agent filter. When operating in this mode, the agent filter allows all requests to pass through. However, if the logging is enabled, the agent filter will still log all the requests that it intercepts.
This mode is provided to facilitate development and testing efforts in a controlled development or test environment. Do not to use this mode of operation in a production environment at any time.
Although this mode disables the agent filter from taking any action on the incoming requests other than logging, it has no effect on the agent realm, which might be configured in your deployment container and might get invoked by the deployed application if the deployed application has J2EE security policies in its descriptors or uses programmatic security. With the agent filter disabled, these applications will fail to evaluate the J2EE security policies correctly and as a result the deployed application may malfunction.
To create a situation functionally equivalent to not having the agent in your system at all, set the filter mode to NONE and complete the task described in Removing the Agent Authenticator From BEA WebLogic Server 9.0/9.1.
When the agent filter is operating in this mode, any declarative J2EE security policy or programmatic J2EE security API calls will return a negative result regardless of the user.
This is the least restrictive mode of operation for the agent filter. In this mode, the agent simply ensures that all users who try to access protected web resources are authenticated using Access Manager Authentication Service. In this mode of operation the agent realm is not used.
When operating in this mode, any declarative J2EE security policy or programmatic J2EE security API calls evaluated for the application will result in negative evaluation.
In this mode, the agent filter and agent realm work together with variousAccess Manager services to ensure the correct evaluation of J2EE policies. These policies may be configured using the declarative security in the application's deployment descriptors, or may be implicit in the code of the application in the cases where it uses the J2EE programmatic security APIs. No URL policies defined in Access Manager take effect in this mode of filter operation. When the deployed application uses declarative security in the web-tier, you must configure the agent to enable this feature. See Enabling Web-Tier Declarative Security in J2EE Agents for more information on how to enable this feature. When running in the J2EE_POLICY mode, the agent ensures that the security principal is set in the system for every authorized user access. In the J2EE_POLICY mode, the agent will not enforce any applicable URL policies as defined in Access Manager.
In this mode, the agent filter is used to enforce various URL policies that may be defined in Access Manager.
When the agent filter is in the URL_POLICY mode, the agent does not enforce any applicable J2EE declarative security policies. Such policies along with any calls to J2EE programmatic security API return negative results.
This is the most restrictive mode of the agent filter. In this mode, the filter enforces both J2EE policies and URL policies as defined in Access Manager. This mode of operation requires that the agent realm be configured in the deployment container. When running in the ALL mode, the agent ensures that the security principal is set in the system for every authorized access.
This mode of operation is, with very few exceptions, the preferred mode for deployed production systems.
Certain applications might require the use of web-tier declarative security that enforces role-based access control over web resources such as Servlets, JSPs, HTML files and any other resource that can be represented as a URI. This type of security is enforced by adding security-constraint elements to the deployed application's web.xml deployment descriptor.
Typically security-constraint elements are tied with auth-constraint elements that identify the role membership that will be enforced when a request for a protected resource is made by the client browser. The following example illustrates this idea:
<security-constraint> <web-resource-collection> <web-resource-name>Report Servlet</web-resource-name> <url-pattern>/ReportGenServlet</url-pattern> </web-resource-collection> <auth-constraint> <role-name>MANAGER</role-name> </auth-constraint> </security-constraint>
This fragment of deployment descriptor can be used to ensure that access to the report generation servlet is allowed only to those users who are members of the role called Manager.
In order for such a construct to work, you must make the necessary modifications in the J2EE agent AMAgent.properties configuration file to ensure it can identify and handle such requests.
Ensure that a login-config element is specified for the web application that is being protected and that the login-config element has the auth-method set to FORM.
The supporting form-login-config element is also required.
The form-login-page element of form-login-config should be added as one of the values for the following property in the J2EE agent AMAgent.properties configuration file:
As an example, consider the following login-config element of a protected application:
<login-config> <auth-method>FORM</auth-method> <form-login-config> <form-login-page>/jsp/login.jsp</form-login-page> <form-error-page>/block.html</form-error-page> </form-login-config> </login-config>
Notice how the form-login-page is specified for the supporting form-login-config element. This value must be set for the following property in the J2EE agent AMAgent.properties configuration file as shown:
com.sun.identity.agents.config.login.form[0] = /Portal/jsp/login.jsp
Notice that the value of the form-login-page as specified in the deployment descriptor is not the same as what is specified in the J2EE agent AMAgent.properties configuration file. The difference being that when you enter this value in the configuration file, you must prefix it with the context path for the application on which this form-login-page is going to be used. In this particular example, the context path of the application is "/Portal."
Similarly, if you have more than one application deployed that require web-tier declarative security, you must add their respective form-login-pages to the J2EE agent AMAgent.properties configuration file. For example, other entries could be:
com.sun.identity.agents.config.login.error.uri[1] = /BankApp/SignOn
com.sun.identity.agents.config.login.error.uri[2] = /ERP/LoginServlet
Please ensure that each such element added to this list has a unique index entry. Having duplicate index entries can result in the loss of data and consequently result in the malfunction of the application.
Once you have configured the web application's deployment descriptor to use the form-login mechanism for web-tier declarative security and have added the full URI of the form-login-page for each such application in the J2EE agent AMAgent.properties configuration file, the web-tier declarative security is enabled for these applications.
When a protected application is configured for web-tier declarative security handling by the agent, it must be redeployed with a form-login configuration as described in this section. This configuration requires that two application resources be specified in the application's web.xml deployment descriptor: one for the form-login-page and the other for the form-error-page. Regardless of whether the resource corresponding to the form-login-page exists in the application or not (this depends on how the agent is configured to handle the form-login requests), the resource corresponding to the form-error-page must be present in the application. This resource is directly invoked by the deployment container to indicate authentication failures and, optionally, authorization failures. If the application does not contain a valid form-error-page matching the URI specified in this deployment descriptor, it could result in HTTP 404 errors when the container chooses to display this error page.
For applications that do not contain a form-login-page, you can specify any URI as long as that URI does not conflict with any application resource and the matching value has been added to the configuration property com.sun.identity.agents.config.login.form.
By default, the agent is configured to intercept all form-login requests and handle them without invoking the actual form-login-page resource as specified in the web.xml of the protected application. Thus, when using a default installation of the agent, the application is not required to have a resource corresponding to the form-login-page element specified in web.xml. This allows for the configuration of web-tier declarative security for applications that were not designed to use the form-login mechanism and instead relied on other login schemes available in J2EE specification. This behavior of the agent can be changed so that it allows the form-login requests to be handled by actual resources that exist within the application by changing the agent configuration properties as applicable. For details on how this can be done, please refer to the section Customizing Agent Response for Form Login.
If the agent filter is operating in the URL_POLICY mode, any necessary URL policies to allow access to the form-error-page resource must be created for all users.
To further customize the behavior of the application when using web-tier declarative security, see Web-Tier Security Details.
When the deployment container gets a request for a resource that is protected by the web-tier declarative security-constraint, it must evaluate the credentials of the user against the agent realm to ensure that only authorized requests go through. In order to process such a request, the deployment container requires the user to sign on using the specified form login page as mentioned in the form-login-config element of the web.xml descriptor. Based on the specification of the FORM authentication mechanism, it is required that the user submits a valid user name as j_username and a valid password as j_password to the special URI j_security_check using the HTTP POST method of form submission.
By default, the content that the agent sends to the client browser on intercepting a request for the form login page is read from the file called FormLoginContent.txt located in the locale directory of the agent installation. This file contains the following HTML code:
<html> <head> <title>Security Check</title> </head> <body onLoad="document.security_check_form.submit()"> <form name="security_check_form" action="j_security_check" method="POST"> <input type="hidden" value="am.filter.j_username" name="j_username"> <input type="hidden" value="am.filter.j_password" name="j_password"> </form> </body> </html>
Before the agent streams out the contents of this file, it replaces all occurrences of the string am.filter.j_username by the appropriate user name. Similarly, all occurrences of the string am.filter.j_password are replaced by a temporary encrypted string that acts as a one-time password for the user.
The J2EE agent AMAgent.properties configuration file allows you to completely control the content that is sent out to the user when the deployment container requires a form login from the user.
The ability to customize the agent response form login is not a feature whose purpose is to change the form login page nor is the purpose of this feature to bypass the default Access Manager login page.
Using the J2EE agent AMAgent.properties configuration file, you can customize the agent response in the following ways:
Modify the content of the FormLoginContent.txt file to suit your UI requirements as necessary.
Ensure that regardless of the modifications you make, the final file submits the j_username and j_password to the action j_security_check via HTTP POST method.
(Conditional) You can specify the name of a different file using the property com.sun.identity.agents.config.login.content.file in the J2EE agent AMAgent.properties configuration file.
If you specify the file name, you must ensure that it exists within the locale directory of the agent installation.
If you wish that this file be used from another directory, you can simply specify the full path to this new file.
Ensure that regardless of the modifications you make, the final file submits the j_username and j_password to the action j_security_check via HTTP POST method.
(Conditional) If you have more than one application and would like to have an application-specific response to the form login requests, instruct the agent to allow the form login request to proceed to the actual form login page.
This can be done by setting the value of the configuration property as follows:com.sun.identity.agents.config.login.use.internal as false.
In this situation, you must ensure that the resource that receives this request extracts the am.filter.j_username and am.filter.j_password from the HttpServletRequest as attributes and uses that to ensure that eventually a submit of these values as j_username and j_password is done to the action j_security_check via HTTP POST method.
The following JSP fragment demonstrates how this can be done:
<form action="j_security_check" method="POST"> <% String user = (String) request.getAttribute("am.filter.j_username"); String password = (String) request.getAttribute("am.filter.j_password"); %> <ul> <li>Your username for login is: <b><%=user%></b></li> <li>Your password for login is: <b><%=password%></b></li> </ul> <input type=hidden name="j_username" value="<%=user%>"> <input type=hidden name="j_password" value="<%=password%>"> <input type="submit" name="submit" value="CONTINUE"> </form>
This mechanism would therefore allow you to have an application-specific form-login handling mechanism.
The agent allows basic failover capabilities. This helps you ensure that if the primary Access Manager instance for which the agent has been configured becomes unavailable, the agent will switch to the next Access Manager instance as specified in the J2EE agent AMAgent.properties configuration file. This setup can be achieved by implementing the following steps.
Provide a list of Access Manager authentication services URLs that may be used by the agent to authenticate users who do not have sufficient credentials to access the protected resources.
Configure the following property to create the list:
You may specify more than one login URL as follows:
com.sun.identity.agents.config.login.url[0] = primary-AM-server
com.sun.identity.agents.config.login.url[1] = failover-AM-server1
com.sun.identity.agents.config.login.url[2] = failover-AM-server2
Represents the URL of the primary Access Manager instance to which users are redirected for authentication.
Represents the URL of the Access Manager instance to which users are redirected for authentication if the primary Access Manager instance fails.
Represents the URL of the Access Manager instance to which users are redirected for authentication if the primary Access Manager instance fails and the first failover Access Manager instance fails.
If a URL list is provided to this property, com.sun.identity.agents.config.login.url, the agent first tries to establish a connection to the first server (primary-AM-server) specified in the URL list. If the agent is successful in establishing this connection, it redirects the user to the Access Manager instance for authentication.
(Optional) Turn prioritization on for the failover lists by setting the following property to true:
Setting this property to true turns prioritization on for the login URL list and the CDSSO URL list. The two cases shown in this step specifically mention the login URL list. However, this explanation of prioritization is exactly the same for the CDSSO URL list. The final step in this procedure describes how to create the CDSSO URL list in case such a scenario applies to your site's deployment.
The following cases describe the behavior of the agent in different situations: when you turn on prioritization and when you do not turn on prioritization for the login URL list.
Case 1: com.sun.identity.agents.config.login.url.prioritized = true
A value of true means that priority is established for the login URL list described in Step 1. The list was created by configuring the following property:
Therefore, the first URL on the list, which is abbreviated here as .url[0], has a higher priority than .url[1] and .url[1] has higher priority than.url[2] and so on. If the server (primary-AM-server) specified in this example as the value for .url[0] is running, the agent sends all requests to this server only. However, if primary-AM-server fails, from that point on, subsequent requests are sent to the server (failover-AM-server1) associated with .url[1]. Furthermore, if at some point primary-AM-server comes back, then the subsequent requests from that point on are sent to primary-AM-server, since it takes priority over failover-AM-server1. This mechanism always fails back to the highest priority Access Manager instance among the Access Manager instances that are running at the point in time the agent must redirect requests to an Access Manager instance.
Case 2: com.sun.identity.agents.config.login.url.prioritized = false
In this case, no server takes priority over another. Failover occurs in a round-robin fashion. If all the servers are running, the agent sends requests to the server (primary-AM-server) associated with .url[0]. If primary-AM-server goes down then all subsequent requests are sent to the server (failover-AM-server1) associated with .url[1]. The agent keeps sending the requests to failover-AM-server1 unless that server goes down. If failover-AM-server1 does go down then the agent routes all the subsequent requests to the server (failover-AM-server2) associated with .url[2] until it goes down. If it goes down, the agent tries to connect to primary-AM-server once again. Assuming that by then the primary-AM-server is running, all the subsequent requests from then on are sent to primary-AM-server. This is a simple round-robin mechanism without any priority involved.
Provide a list of Access Manager Naming Service URLs that may be used by the agent to get access to the various other service URLs that may be needed to serve the logged on user.
This can be done by using the following property:
More than one naming service URL may be specified as a space delimited list of URLs. The following example illustrates this idea:
com.iplanet.am.naming.url = primary-AM-server failover-AM-server1
(Conditional) If the deployment consists of an agent instance that is on a different domain than multiple Access Manager instances for which you want to enable failover, provide a URL list of the remote Access Manager instances.
Configure the following property to create the list:
Specify more than one CDSSO URL in the following manner:
com.sun.identity.agents.config.cdsso.cdcservlet.url[0] = primary-remoteAM-server
com.sun.identity.agents.config.cdsso.cdcservlet.url[1] = failover-remoteAM-server1
com.sun.identity.agents.config.cdsso.cdcservlet.url[2] = failover-remoteAM-server2
When a user tries to access a protected resource without having authenticated with Access Manager Authentication Services, the request is treated as a request with insufficient credentials. The default action taken by the agent when it encounters such a request is to redirect the user to the next available Login URL as configured in the J2EE agent AMAgent.properties configuration file.
Despite the repeated redirects performed by the agent, the user could still be unable to furnish the necessary credentials. In such a case, the agent can be directed to block such a request. This is configured using the Login Attempt Limit configuration property. The configuration property that controls this behavior is as follows:
If a non-zero positive value is specified for this property in the J2EE agent AMAgent.properties configuration file, the agent will only allow that many attempts before it blocks the access request without the necessary credentials. When set to a value of zero, this feature is disabled.
To guard against potential denial-of-service attacks on your system, enable this feature.
The processing of requests by the agent can result in redirects for the client browser. Such redirects can happen when the user has not authenticated with Access Manager Authentication Service, lacks the sufficient credentials necessary to access a protected resource, and a variety of other reasons.
While the agent ensures that only the authenticated and authorized users get access to the protected resources, there is a remote possibility that due to misconfiguration of the system, the client browser may be put into an infinite redirection loop.
The Redirect Attempt Limit configuration property allows you to guard against such potential situations by ensuring that after a given number of consecutive requests from a particular user that result in the same exact redirect, the agent blocks the user request. This blocking of the request is only temporary and is removed the moment the user makes a request that does not result in the same redirect or results in access being granted to the protected resource. The configuration property that controls this feature is:
If a non-zero positive integer is specified as the value of this property, the agent will break the redirection loop after the specified number of requests result in the same redirects. When its value is set to zero, this feature is disabled.
To protect the system from such situations, enable this feature. Furthermore, enabling this feature can help in breaking potential denial of service attacks.
The J2EE agent AMAgent.properties configuration file allows you to specify a list of URIs that are treated as not-enforced. Access to these resources is always granted by the agent. The configuration property that controls this list is as follows:
It is recommended that if your deployed application has pages that use a bulk of graphics that do not need the agent protection, such content be added to the agent's not-enforced list to ensure the optimal utilization of the system resources. Following is an example of the entries that you may specify in the not-enforced list:
com.sun.identity.agents.config.notenforced.uri[0] = /images/*
com.sun.identity.agents.config.notenforced.uri[1] = /public/*.html
com.sun.identity.agents.config.notenforced.uri[2] = /registration/*
This enables the agent to focus on enforcing access control only over requests that do not match these given URI patterns. The use of a wildcard (*) is allowed to indicate the presence of one or more characters in the URI pattern being specified.
In situations where only a small portion of the deployed application needs protection, you can configure the agent to do just that by inverting the not-enforced list. This results in the agent enforcing access control over the entries that are specified in the not-enforced list and allowing access to all other resources on the system. This feature is controlled by the following property:
When you set the value to true for this property, it makes the entries specified in the not-enforced list as enforced entries and the rest of the application resources are treated as not-enforced.
When the not-enforced list is inverted, the number of resources for which the agent will not enforce access control is potentially very large. The use of this feature should therefore be used with extreme caution and only after extensive evaluation of the security requirements of the deployed applications.
When an Access Denied URI is specified, it is never enforced by the agent regardless of the configuration of the not-enforced list. This is necessary to ensure that the agent can use the Access Denied URI to block any unauthorized access for protected system resources.
When configuring access denied URIs within the deployment descriptor of the web application, you must ensure that these values are added to the not-enforced list of the agent. Failing to do so can result in application resources becoming inaccessible by the user.
Any resource that has been added to the not-enforced list must not access any protected resource. If it does so, it can result in unauthorized access to protected system resources. For example, if a servlet that has been added to the not-enforced list, in turn sends the request to another servlet, which is protected, it can potentially lead to unauthorized access to the protected servlet.
Certain applications rely on the presence of user-specific profile information in some form in order to process the user requests appropriately. J2EE agents provide the functionality that can help such applications by making these attributes from the user's profile available in various forms. Policy Agent 2.2 allows the following attribute types to be fetched using the corresponding property from the J2EE agent AMAgent.properties configuration file:
The following values are possible for these three properties:
The default value for these properties is NONE, which specifies that that particular attribute type (profile attribute, session attribute, or policy response attribute) is not fetched. The other possible values (HEADER, REQUEST_ATTRIBUTE, or COOKIE) that can be used with these properties specify which method will be used to fetch a given attribute type. For more information, see Methods for Fetching Attributes in J2EE Agents.
Depending upon how these values are set, the agent retrieves the necessary attributes available for the logged on user and makes them available to the application.
The final subsection in this section describes other properties in the J2EE agent AMAgent.properties configuration file that can influence the attribute fetching process, see Common Attribute Fetch Processing Related Properties.
The following subsections provide information about how to set the type of attribute that is fetched.
To obtain user-specific information by fetching profile attributes, assign a mode to the profile attribute property and map the profile attributes to be populated under specific names for the currently authenticated user. The following example first demonstrates how to assign the REQUEST_ATTRIBUTE mode for fetching profile attributes and then demonstrates a way to map those attributes:
com.sun.identity.agents.config.profile.attribute.fetch.mode = REQUEST_ATTRIBUTE
The key is the profile attribute name and the value is the name under which that attribute will be made available.
com.sun.identity.agents.config.profile.attribute.mapping[cn]=CUSTOM- Common-Name com.sun.identity.agents.config.profile.attribute.mapping[mail]=CUSTOM- Email com.sun.identity.agents.config.profile.attribute.fetch.mode = REQUEST_ATTRIBUTE com.sun.identity.agents.config.profile.attribute.mapping[] =
To obtain user-specific information by fetching profile attributes, assign a mode to the session attribute property and map the session attributes to be populated under specific names for the currently authenticated user. The following example first demonstrates how to assign the REQUEST_ATTRIBUTE mode for fetching session attributes and then demonstrates a way to map those attributes:
com.sun.identity.agents.config.session.attribute.fetch.mode = REQUEST_ATTRIBUTE
The key is the session attribute name and the value is the name under which that attribute will be made available.
com.sun.identity.agents.config.session.attribute.mapping[UserToken]= CUSTOM-userid com.sun.identity.agents.config.session.attribute.fetch.mode = REQUEST_ATTRIBUTE com.sun.identity.agents.config.session.attribute.mapping[] =
To obtain user-specific information by fetching policy response attributes, assign a mode to the policy response attribute property and map the policy response attributes to be populated under specific names for the currently authenticated user. The following example first demonstrates how to assign the REQUEST_ATTRIBUTE mode for fetching policy response attributes and then demonstrates a way to map those attributes:
com.sun.identity.agents.config.response.attribute.fetch.mode = REQUEST_ATTRIBUTE
The key is the policy response attribute name and the value is the name under which that attribute will be made available.
com.sun.identity.agents.config.response.attribute.mapping com.sun.identity.agents.config.response.attribute.fetch.mode = REQUEST_ATTRIBUTE com.sun.identity.agents.config.response.attribute.mapping[] =
Using this property for mapping policy response attributes, you can specify any number of attributes that are required by the protected application. For example, if the application requires the attributes cn and mail, and it expects these attributes to be available under the names COMMON_NAME and EMAIL_ADDR, then your configuration setting would be as follows:
com.sun.identity.agents.config.response.attribute.mapping[cn] = COMMON_NAME
com.sun.identity.agents.config.response.attribute.mapping[mail] = EMAIL_ADDR
The attribute types can be fetched by different methods as follows:
HTTP Headers
Request Attributes
When the agent is configured to provide the LDAP attributes as HTTP headers, these attributes can be retrieved using the following methods on the javax.servlet.http.HttpServletRequest interface:
long getDateHeader(java.lang.String name)
java.lang.String getHeader(java.lang.String name)
java.util.Enumeration getHeaderNames()
java.util.Enumeration getHeaders(java.lang.String name)
int getIntHeader(java.lang.String name)
The property that controls the parsing of a date value from an appropriate string as set in the LDAP attribute is the following:
This property defaults to the value EEE, d MMM yyyy hh:mm:ss z and should be changed as necessary.
Multi-valued attributes can be retrieved as an instance of java.util.Enumeration from the following method:
java.util.Enumeration getHeaders(java.lang.String name)
When the agent is configured to provide the LDAP attributes as request attributes, the agent populates these attribute values into the HttpServletRequest as attributes that can later be used by the application as necessary. These attributes are populated as java.util.Set objects, which must be cast to this type before they can be successfully used.
When the agent is configured to provide the LDAP attributes as cookies, the necessary values are set as server specific cookies by the agent with the path specified as "/."
Multi-valued attributes are set as a single cookie value in a manner that all values of the attribute are concatenated into a single string using a separator character that can be specified by the following configuration entry:
One of the tasks of the application is to parse this value back into the individual values to ensure the correct interpretation of the multi-valued LDAP attributes for the logged on user.
When you are fetching attributes as cookies, also use the cookie reset functionality to ensure that these cookies get cleaned up from the client browser when the client browser's session expires. For more information, see Using Cookie Reset Functionality in J2EE Agents.
This section lists the most common configuration properties that are used to influence attribute fetching.
This property allows you to assign a character to be used to separate multiple values of the same attribute when it is being set as a cookie. This property is set in the following manner:
com.sun.identity.agents.config.attribute.cookie.separator = |
This property is a flag that indicates if the value of the attribute should be URL encoded before being set as a cookie. This property is set in the following manner:
com.sun.identity.agents.config.attribute.cookie.encode = true
This property allows you to set the format of date attribute values to be used when the attribute is set to HTTP header. This format is based on the definition as provided in java.text.SimpleDateFormat. This property is set in the following manner:
com.sun.identity.agents.config.attribute.date.format = EEE, d MMM yyyy hh:mm:ss z
To ensure appropriate user experience, the use of valid URLs by users to access resources protected by the agent must be enforced. This functionality is controlled by three separate properties:
Enables FQDN
Stores the default FQDN value
Sets FQDN mapping
The configuration property for the default FQDN provides the necessary information needed by the agent to identify if the user is using a valid URL to access the protected resource. If the agent determines that the incoming request does not have a valid hostname in the URL, it redirects the user to the corresponding URL with a valid hostname. The difference between the redirect URL and the URL originally used by the user is only the hostname, which is now changed by the agent to a fully qualified domain name (FQDN) as per the value specified in this property.
The property FQDN Map provides another way by which the agent can resolve malformed access URLs used by the users and take corrective action. The agent gives precedence to entries defined in this property over the value defined in the default FQDN property. If none of the entries in this property matches the hostname specified in the user request, the agent uses the value specified for default FQDN property to take the necessary corrective action.
The FQDN Map property can be used for creating a mapping for more than one hostname. This can be done when the deployment container protected by this agent can be accessed using more than one hostname. As an example, consider a protected deployment container that can be accessed using the following host names:
IP address
In this case, assuming that www.externalhostname.com is the default FQDN, then the FQDN Map can be configured as follows to allow access to the application for users who will use the hostname internalhostname.interndomain.com or the raw IP address, say 188.8.131.52:
com.sun.identity.agents.config.fqdn.mapping [internalhostname.interndomain.com] = internalhostname.interndomain.com
com.sun.identity.agents.config.fqdn.mapping [188.8.131.52] = 184.108.40.206
The agent allows you to reset certain cookies that may be present in the user's browser session if the user's Access Manager session has expired. This feature is controlled by the following configuration properties:
com.sun.identity.agents.config.cookie.reset.enable = false com.sun.identity.agents.config.cookie.reset.name[0] = com.sun.identity.agents.config.cookie.reset.domain[] = com.sun.identity.agents.config.cookie.reset.path[] =
The preceding four properties can be used to specify the exact details of the cookie that should be reset by the agent when a protected resource is accessed without a valid session.
The com.sun.identity.agents.config.cookie.reset.name property specifies a list of cookie names that will be reset by the agent when necessary. Each entry in this list can correspond to a maximum of one entry in the com.sun.identity.agents.config.cookie.reset.domain property and the com.sun.identity.agents.config.cookie.reset.path property, both of which are used to define the cookie attributes - the domain on which a particular cookie should be set and the path on which it will be set.
When using this feature, ensure that the correct values of the domain and path are specified for every cookie entry in the cookie list. If these values are inappropriate, the result might be that the cookie is not reset in the client browser.
When a cookie entry does not have an associated domain specified in the domain map, it is handled as a server cookie. Similarly, when a cookie entry does not have a corresponding path entry specified, the anticipated cookie path is "/."
In situations when Access Manager and the deployment container are installed on the same system but on different ports, certain browsers may not send the HOST header correctly to the agent in situations where there are redirects involved between Access Manager Authentication Service and the agent. In such situations, the agent, relying on the availability of the port number from the deployment container, might misread the port number that the user is trying to access.
When such a situation occurs, it can have a severe impact on the system since the agent now senses a resource access that in reality did not occur and consequently the subsequent redirects as well as any policy evaluations may fail thereby making the protected application inaccessible to the end user.
This situation can be controlled by enabling port check functionality on the agent. This is controlled by the following configuration property:
When this property is set to true, the agent verifies the correctness of the port number read from the request against its configuration. The configuration that provides the reference for this checking is set by the following property:
This property allows the agent to store a map of various ports and their corresponding protocols. When the agent is installed, this map is populated by the preferred port and protocol of the agent server as specified during the installation. However, if the same agent is protecting more than one HTTP listeners, you must add that information to the map accordingly.
When the agent discovers an invalid port in the request, it takes corrective action by sending some HTML data to break the redirection chain so that the browser can reset its HOST header on the subsequent request. This content is read from the file that resides in the locale directory of agent installation. The name of the file is controlled by the following property:
This property can also be used to specify the complete path to the file that may be used to achieve this functionality. This file contains special HTML that uses a META-EQUIV REFRESH tag in order to allow the browser to continue automatically when the redirect chain is broken. Along with this HTML, this file must contain the string am.filter.request.url, which is dynamically replaced by the actual request URL by the agent.
You can modify the contents of this file or specify a different file to be used, if necessary, so long as it contains the am.filter.request.url string that the agent can substitute in order to construct the true request URL with the correct port. The contents of this file should be such that it should either allow the user to automatically be sent to this corrected location or let the user click on a link or a button to achieve the same result.


text:
Monday, 24 September 2012
Beating aliasing.
Crysis 2 includes FXAA filter (an old version). In MaLDoHD 3.0 I included a FXAA tweak to improve FXAA sharpness using "FXAA ultra" in the Config Tool. A few months ago, I talked with Jorge Jiménez (SMAA creator) to include the injector in version 4.0 of the mod. SMAA offers very good results. The best results of SMAA in Crysis 2 occur when the in-game FXAA is completely disabled. The problem is that the effect of rain in Crysis 2 is tied to r_postMSAA=1, which activates the FXAA. That is, if you disable FXAA in Crysis 2, the rain disappears. There are three levels (I remember now) where it's raining: Intro (when you leave the submarine), Times Square and City Hall. I don't want to lose rain effect, and I think is a bad idea to ask users to activate FXAA only in those levels through command console.
Last week I discovered the SweetFX injector. It uses Jorge Jimenez SMAA as the basis adding some new effects on top. Thinking about the filters again I took up an old battle, and I decided to spend this weekend to get rain effect while disabling FXAA. And I did it. So now MaLDoHD 4.0 has an amazing image quality using the SMAA injector, with internal FXAA completely disabled and visible rain. This week I will test SweetFX and perhaps replace the SMAA injector. I have to find a good setup because I don't need more sharpness and do not want to modify saturation values because are already slightly modified in my TOD.
Do not worry, this is not the only mod thing I've done this weekend.
Publicado por MaLDo en 10:12 30 comments:
Wednesday, 19 September 2012
Walking the final stretch
As I said, I will put more info here for the final part of version 4 development. So you can know how many is each 0.1. I hope there are no complaints about putting too many info XD As you'll see I use to making it less boring opening several fronts and doing several simultaneous tests.
I have a near final version of the textures for the doors of the church. Lack decide whether I get the "mass timetable" into a separate decal to gain some definition in letters without taking up much more memory. As I can make a squared decal I can make it without alpha layer, which would be only 170 KB for a 512x512 resolution, which is far enough for crisp letters. Below you can see the texture of the big and small doors (version with "mass timetable" into the main diffuse). You can notice that the crytek original texture from a real picture preserves a person reflection in the glass. LOL.
For columns of Central Park I had previously done tests using decals. I had take that decision because the ornament is a piece of columns within a texture atlas. An atlas is a big texture that includes smaller textures inside. For example, a texture atlas for texturing a car would be a big picture with the door, front, lights, wheels and steering wheel all crowded together and then use each piece in the share. Using atlas reduce drawcalls. One atlas for diffuse and one for the bumpmapping that could be 10 different textures if you have them independently. You've surely heard of the Rage megatexture as a giant atlas where they put all the textures of the level.
When I want to improve the resolution of a texture that is a portion of an atlas, the first attempt to do using decals (if possible) to paste on the final object without changing the atlas (you can see a perfect example of this on the Warning sign in the Hargreves cryomachine in the last post). This not waste memory multiplying by four the whole atlas that I will not improve. So the first tests were with a decal ornament on the columns. I then added a bump detail layer using my stone bump texture. The problem with it is that it's necessary to paste as many decals as that item is displayed on the map and place them accurately on the surface (and here are 4 ornaments for each column, with dozens of columns). This also triggers the memory, since each decal has its alpha layer for transparency when decal is not a square.
In this case, as Central Park is not a level that has too much variety of textures, I have valued expand the 1024x1024 atlas to 2048x2048 and improve much of the column instead of just the center ornament. The original atlas includes a 1024x1024 alpha layer to use as specular texture. So the atlas has a size of 1.3 MB. If I keep specular texture in the alpha channel, my new 2Kx2K atlas will be 5.4 MB. The first thing then is to get the alpha channel as a separate texture, then I have a 2.7 MB diffuse plus a 680 KB specular. Then I walked around the map looking for lighting conditions, the location of the columns and the low values of specular in the material they use, and concluded that using a 512x512 specular represents no loss in visual quality. So that in the end will be a diffuse atlas of 2.7 MB and a specular atlas of 170 KB.
To make the column first thing I did was look for real pictures of central park columns. Below you can see the two best real pictures I found in google images. From the first I could conclude that there aren't two equal columns in the park, so it was an impossible task to find the original image used for column crytek. So I decided to use the second photo removing the bird's nest, which seemed too quirky element to include it on all columns.
The following is the color change, increase symmetry, eliminate hard shadows, add three layers of dirt and start creating the height map that I will use to make bump map and displacement map (parallax effect). You can see below part of the unfinished process. It's the first test, no bump and no displacement yet.
I also searched photos of leaves to redo the texture of the bushes. In this case, the leaves of the bushes are also part of an atlas that includes textures for various types of vegetation. It is an even worse scenario than columns because these bushes are at all levels. If I decide to improve texture atlas using a new texture to represent only that part, I have to create a new material by changing the tiling values and later assign this material to all the bushes of all levels one by one. A really hard work. In this case, alpha layer can't be extracted, it's required to handle alpha transparency. The only way to reduce size would be using an alpha layer with a single bit of precision. This halves the size of the texture, but generates more obvious aliasing at the edges of the leaves. The final size of the texture can be something like this
Atlas 1024x1024 with full alpha -> 1.3 MB
Atlas HD 2048x2048 with 1bit alpha -> 2.6 MB
Atlas HD 2048x2048 with full alpha -> 5.4 MB
Atlas HD 4096x4096 with 1 bit alpha -> 10.8 MB
Atlas HD 4096x4096 with full alpha -> 21.7 MB
Currently there is no 4096x4096 textures in the whole mod. The only two candidates to use this resolution are the bushes and maple tree leaves. That's why I have left them for last, to test performance in both cases. Screenshots below of individual leaves and some tests using a 2048x2048 with 1 bit alpha (the "worse" option).
Publicado por MaLDo en 09:20 26 comments:
Tuesday, 18 September 2012
Percentage system and System requeriments
Requeriments considerations
Before some people take disappointments, I would like to clarify that the mod requirements are quite high. Version 3.0 of the mod was a pretty big optimization compared to the original game, but in 4.0 there are too many improvements and I can't do optimization miracles.
While it is true that by using the 4.0 recommended settings, performance can be higher than in the original game in ultra settings (at least in my computer), the memory usage is higher.
I guess you may have noticed the large number of textures modified, the new improved materials, additional shadows, etc, and that is not free in terms of memory usage.
Currently, there are several points that crash the game on my computer. Lowering the resolution below 1920x1200 I managed to avoid it. Of course, that's not the solution. I want to say my cpu is already very electromigrated and I'm having crashes from time to time so it's difficult to separate the cpu problems and problems because excessive memory usage.
To test the mod I'm using only one 480GTX which has 1.5 GB of VRAM. Before the release there are still many optimizations at several points in some levels and textures. Furthermore, I added a new option "reduced Textures" in the Configurator Tool which allows using the mod with some of the larger textures reduced. I hope that after the release of the mod has some feedback from users with different configurations of graphics memory so I can further refine the reduced texture option.
Percentage system
I want to clarify one more time (I hope it's the last time) how percentage system works. I work with a few documents with pending tasks. I have a file only for pending screenshots of important or "easy to see" changes. Another file is for to-do fixes in levels and it has an individual percentage for each level.
The main file is about textures/materials pending changes and some levels fixes are into this file too.
The percentage I post in blog is global percentage. How is possible that only a 0.1% is too long? That's easy, because each 0.1% implies a lot of changes.
In the regular monthly copy of June, I have 1075 textures and 1051 material definitions. Some of the textures are exact copy of crytek HD textures, others are Crytek HD textures with some modifications and a lot of them are new from scratch textures. All materials have modifications on some way.
Also the number of fixes on each map exceeded 1.000 some time ago. A few of them can have more than 2.000 changes and Crysis 2 have 19 levels. It's easy that global sum is near or exceeded 20.000 fixes/little changes in all the single player campaign.
With those numbers, each 0,1% can be more than 20 modifications including fixes, textures and materials. Now you can understand how long every update is. For example, since last post (99.9%) I have fixed 40 flickering problems in two levels and those are not included in the to-do files because I've discovered them two days ago.
On the remaining tasks, the truth is that they are a very few. Those are the main pending tasks:
- Create new texture to the branches of the trees (maple). I have made many tests and photos but can not find a result that satisfied me. It is one of the textures is costing me most. Right now I have planned a route through the countryside to find better pictures with which to work.
- Create new texture for the walls low shrubs. Similar situation as above.
- Create new texture for columns_B (diff, bump, spec and displacement) in Central Park.
- Finish fourth Precipice Rocks texture (diff, bump, spec and displacement) and use it in some materials.
- Create new texture for Downtown Church doors.
- Fix bumpmap for interior parking walls.
- Finish the last marble texture in Terminal Station level.
- Add casing shells shadows on each decal in CentralStation level.
- Optimize some areas to reduce memory usage.
- Add materials list for "Reduced Tesselation" option.
- Finish reduced textures versions and add list into program.
- End TOD.
- Integrate QMOD.
- Complete final test walktrough in search of forgotten bugs.
- Preparing and uploading files.
It's a lot of work, but compared to what I've left behind is only a small step. I'll show some of the pending task for more accurate percentage representation.
Thank you very much to all who follow the blog regularly.
Publicado por MaLDo en 11:14 28 comments:
Thursday, 13 September 2012
Subscribe to: Posts (Atom)


text:
ITHACA, NY—Actor David Boreanaz used the example of his own career in urging members of the Ithaca College graduating class to begin their search for "an authentic existence." The star of the television series "Bones," "Buffy the Vampire Slayer" and "Angel"—a 1991 cinema and photography graduate of the college—returned to his alma mater on May 19 to speak at the 118th commencement.
Addressing some 1,610 graduates and their guests, Boreanaz noted that as an actor he has spent his life inhabiting other people's psyches in order to tell other people's stories. "But in so doing, I have crafted my own story and tapped into my own authentic self. And that is what you are doing right now."
Don't be discouraged, Boreanaz said, if the plot doesn't thicken overnight.
"My search for that authentic existence. . . . took me on a journey from a parking attendant to a house painter to a props department assistant to the guy who hands out towels in a sports club and a guy who drives a truck and tries to sell gourmet food door to door. . . . Every day I would get off [my sister's couch in L.A.], put on a suit, grab my briefcase packed with 200 resumes . . . and I would drive to studio back lots. I would go on in and I would act as if I owned the place. I'd hang on the sets, get unintentional cameos in the crowd shots, and when they called lunch, I'd follow the pack to craft services and I would eat."
Those dues-paying experiences, Boreanaz said, along with the films and scripts he'd written at Ithaca College, taught him the art and power of telling stories.
"Live in your own stories," he said. "And own them . . . . If you don't, the story you're telling is false. What connects me to you is what's essential to all of us, the very essence of all of us. It's life."
Boreanaz told the graduates to persevere, referencing his own career. "You're going to make mistakes—make them big. Make huge mistakes, learn from them. You're going to get sidetracked. Everyone gets sidetracked. You might even get canceled; don't take it personally. Just get back out there. Because you know what? If you make it through season two, they might even give you a spin-off."
In conclusion, Boreanaz thanked the Class of 2013 for welcoming him home.
"When you think about it," he said. "You never really say good-bye to Ithaca, because it's very likely that whatever you find best in yourselves, you found right here. I know I did."
The ceremony began with board of trustees chair Thomas Grape welcoming the class of 2013 to the fold of alumni.
The proceedings also included senior class president Rachel Heiss telling her classmates to cherish the many discoveries they'd made during the last four years.
"Identities change and transform as we take on new experiences," Heiss said. "We are not the same people we were when we first arrived, and that's not a bad thing at all. We are defined by these encounters, and it's important for us to always remain open as we continue our journey through life as IC alumni. Our time at Ithaca College has taught us how to be critical thinkers, how to open our minds to new possibilities and theories, and most importantly, how to take advantage of any opportunity that comes our way. While we all have our separate identities, we have all been shaped one way or another by Ithaca College."
Following Heiss's remarks, the senior class officers presented the class gift of $14,915, the largest amount ever raised by a senior class. The Class of 2013 also set a record for the number of donors as well as percentage of class participation. With an Alumni Association Board of Directors match of $65 per student donor, the class gift will support the Ithaca College Annual Fund.
President Tom Rochon then asked the newly minted graduates to recall that morning in August 2009, when they first gathered as a freshman class to begin their college experience.
"Use that moment to think about who you were when you first arrived at Ithaca College, and then do an inventory of yourself today," the president said. "You'll find an amazing contrast. You know more; you have experienced more; you are capable of more; your voice is more powerful, and you have much greater insight into the essence of who you are."
The world beyond college will also present challenges, Rochon said, admonishing the new graduates to face those future challenges with the same reflective spirit with which they faced the ones from the last four years. Do that, he said, and the transformation process will continue.
"Change and growth are wonderful things. They are the raw material of social progress and they are the essence of personal happiness. You will only enjoy the rewards of change and growth if you also hold on to what you have learned about yourself during your time at IC."
The president ended his remarks by referring to the inscription on the medallions passed out to the graduates before the ceremony: "In the end, we will conserve only what we love, we will love only what we understand, and we will understand only what we are taught."
"I hope the quotation from the African environmental advocate Baba Dioum is meaningful to you today and that it becomes even more meaningful as the years pass," said Rochon. "You now stride into the world as you once strode onto this campus, full of questions and doubts, I'm sure, but also full of the talent, energy and ambition that will enable you to tackle every challenge. Please embrace that world. Revel in its challenges, but do so from the powerful base created by the knowledge and values you've developed during your time here at Ithaca College. Don't just conserve what you love; defend what you love, and give it everything you have."


text:
Philadelphia, PA Map
Odean Pope + Andrew Cyrille
Ars Nova Workshop is pleased to present a return performance by Philadelphia saxophonist Odean Pope and Brooklyn drummer Andrew Cyrille, two avant-garde jazz giants who played their first duo together at an Ars Nova Workshop concert in 2013.
Odean Pope, who has lived in Philadelphia since he was 10-years-old, began his career performing with Marvin Gaye, Stevie Wonder, and James Brown, frequently at Philadelphia's Uptown Theater. He then went on to work with jazz artists such as Jimmy McGriff and Max Roach, and, in the late-1970s, he formed Catalyst, a funk-infused jazz quartet with Philadelphia-based musicians Eddie Green, Sherman Ferguson, and Al Johnson. He is the leader of the Odean Pope Saxophone Choir and the Odean Pope Trio. About his most recent album, Odean's List, All About Jazz writes that it "is a compelling reminder of Pope's relevance as a composer and improviser, one whose talent deserves greater recognition."
Andrew Cyrille, a Brooklyn-born drummer with Haitian roots, has worked with Coleman Hawkins, Milford Graves, Anthony Braxton, David Murray, Reggie Workman, and Marilyn Crispell. Cyrille was a member of the Cecil Taylor Unit, and he played on Taylor recordings such as Unit Structures and Conquistador, as well as other essential free-jazz albums, like Charlie Haden's Liberation Music Orchestra and Marion Brown's Afternoon of a Georgia Faun. In January, Cyrille's 21st Century Big Band, a 12-piece ensemble that performs its leader's compositions, played for the first time at Lincoln Center, in New York City.
Ars Nova Workshop is a Philadelphia nonprofit jazz and experimental music presenting organization. ANW informs, inspires, and challenges listeners to elevate the role of jazz, improvisation, and experimental music in contemporary culture. ANW events provide a forum for discourse, emergent trends in contemporary music, and unique forms of cultural exchange, while nurturing a diverse community for innovative music.


text:
The one thing I love more than bread or pasta or tuna is........ cheese!
If you can top it with cheese, I'm there. Oh, so totally there.
With all the football games taking place and the Super Bowl approaching, I thought I'd make a nice cheesy dip..... queso dip, as a matter of fact.
I've never made a queso dip before and I was quite happy with how this turned out. Just make sure to keep it warm, so it doesn't coagulate. If you have a small crock-pot for dips, that will work perfectly to serve this in. If you don't have one, I suggest going out and buying one. They are pretty inexpensive and I guarantee that you will use it often. I've used mine for things like fondue and mini sausages in BBQ sauce.
By the way, I'm now on Pinterest.......
...... so, feel free to pop on by and check-out what I'm pinning. Although right now I'm just getting started and don't have too many boards as of yet.
I'm pretty sure I've doomed myself with this whole pinning thing.
Must. Detach. Myself. From. The. Computer!!!!!
Yeah, I'm doomed. DOOMED!
Queso Dip
- 32 Ounces (Weight) Velveeta Cheese
- 8 Ounces (Weight) Cream Cheese
- 2 Tablespoons Butter
- 1/2 White Onion, Diced
- 2 Jalapenos, Fully Or Partially Seeded, Diced
- 1 Garlic Clove, Minced
- 1/3 Cup Half & Half
- 1 Packet (1.25 OZ.) Taco Seasoning
- 1/2 Teaspoon Cayenne Pepper, Or To Taste
- 1 Can (14.5 OZ.) Petite Diced Tomatoes, Well Drained
Turn the heat to low and add the Velveeta, cream cheese, and half & half. Stir continuously until melted and combined with the onion mixture. Add the taco seasoning and cayenne pepper. Lastly gently stir in the drained tomatoes.
Transfer to a small crock-pot to keep warm. Serve with tortilla chips. Makes 1-1/2 quarts of dip.


text:
You may remember the Bimota DB7 Oronero. How could you not? With all that carbon fiber, and rediculous 1:1 power to weight ratio (164bhp to 164kg). It may shock you…now brace yourself…but Bimota actually is going to sell other bikes next year as well.
Shocking? Yes we know. Read more after the jump.


text:
Search: Advanced search
Browse by category:
|Contact Us
Is the noon saakin or Tanween to be read with tafkheem if the letter following it is a letter of tafkheem?
Is the noon saakin or Tanween to be read with tafkheem if the letter following it is a letter of tafkheem, such as Saad, Dhaad, Taa, Thaa and Qaaf. Some have said yes and some have said no, can you please produce evidence with your answer from a well known Tajweed book/manual.
Jazaakallahu khair.
Assalaam alaikum,
The ghunnah of the ikhfa' will be read with tafkheem if the as-saakinah or tanween is followed by a letter that is one of the letters that causes ikhfa' and that letter is a letter of ', such as the , , , etc .
The reading of the ghunnah with tafkheem in such a case is passed down in an authentic chain of reading. You can find reference to it in Hidaayah Al-Qaari' by Ash-Sheikh Al-Mursafee, volume 1, p. 188, it is also found in Fannu-t-tarteel wa 'uloomuh, by Ash-Sheikh Ahmed bin Ahmed At-Taweel, volume 2 p. 614, published by the King Fahd complex for printing the Holy Qur'an. What Ash-Sheikh At-Taweel states is that the ghunnah follows that which comes after it as to tafkheem or tarqeeq, the opposite of the alif which follows that which precedes it in tafkheem and tarqeeq. This means that if the letter after the saakinah or tanween has tafkheem and there is a ghunnah (ikhfa') then there will be tafkheem of the ghunnah.
Ash-Sheikh Ibrahim As-Samannodee wrote the following lines of poetry in his work, "la'aali'u al-bayaani fee tajweed al-Qur'an"
The rawm is like continuing and the alif follows that which is before it, and the opposite for the ghunnah as accostumed
Powered by KBPublisher (Knowledge base software)


text:
Verscend Technologies Pvt. Ltd. (f.k.a Verisk Information Technologies Pvt.Ltd.) is a wholly owned subsidiary of Verscend Inc. a rapidly expanding healthcare data-mining company based in Waltham, Mass. Apart from assisting the parent company with the development of the software, research, and data analysis and solutions, Verscend Technologies is also involved in independent software and website development for other small to medium sized clients. Verscend Technologies is one of the largest software solutions company in Nepal employing around 300 engineers and attracting the brightest of the engineering graduates in Nepal.
Views: 1352 | This job was expired 11 months, 3 weeks ago
|Job Category
|IT & Telecommunication
|Job Level
|Mid Level
|No. of Vacancy/s
|[ 2 ]
|Employment Type
|Full Time
|Job Location
|Hattisar, Kathmandu
|Offered Salary
|Apply Before(Deadline)
|Dec. 21, 2017 23:55 (11 months, 3 weeks ago)
|Education Level
|Experience Required
|More than or equals to 3 years
Technical Requirements:
Other Skills:
Please login to http://www.verscend.com.np/jobs
TO APPLY: For this job, please follow the applying procedure.
Since inception in 2009, we have turned out to be number one jobs provider in Nepal with 120 million+ page views with 2.5 million+ progressive visits every month, created 150,000+ success stories and registered 450,000+ job seekers in our database. We have been offering 28,000+ employers promote their employer brands to jobseekers and advertise diverse opportunities to over a million candidates inside Nepal and abroad. Established as an inevitable bridge between the hiring employers and the job seekers, we are well-known as a national leader in recruitment solutions & career management in Nepal. Read more...
Ganapati Bhawan
Min Bhawan Main Road
New Baneshwor
Kathmandu, Nepal
+977 1 4106700


text:
|Episode Description
|Thursday, Apr 12, 2012 - 7:00 AM
"Boom and Bust in a Desert Town"
The small town of Quartzsite, Arizona, located just 20 miles east of the Colorado River, has been a rock hound's paradise since the 1960s. These days, this former stagecoach town is also a mecca to well over a million visitors each year, most of whom converge on it in a wave of RV's during the months of January and February. Thousands of vendors of rocks, gems, minerals, fossils and everything else imaginable create one of the world's largest open-air flea markets. D
|More on PLUS (PT)
|No upcoming shows in database
|Previous on PLUS (PT)
|No Past shows in database


text:
Offshore Wind Development and Industry Update: A WPA Webinar
October 19, 2011
- Dr. Christopher G. Hart, manager, Department of Energy Offshore Wind, provided an overview of the DOE Wind Program activities and reported on the recently amounted wind FOA awards to spur offshore wind development.
- Darryl Francois, head of the Project & Coordination Branch, Office of Renewable Energy, Bureau of Ocean Energy Management, discussed BOEM's regulatory activities, providing an update on permitting guidelines. Darryl also talked about current BOEM stakeholder engagement activites, including the state and regional working groups.
This free webinar is part of the U.S. Department of Energy's Wind Powering America 2011 webinar series.
Audio and text versions of the webinar are available (WMV 19.5 MB) Download Windows Media Player. Time: 01:07:37. Text Version.
Save the date for a future webinar
- November 16: Wind and Wildlife Interactions
—Julie Jones


text:
PanPastel Ultra Soft Artist Pastel Set 9ml 5/Pkg Blues
- A pastel that is fully erasable and liftable, creates very little dust when applied, and can be double loaded. Colors are genuine artist quality pastels, uniquely packed in a pan format. Lift apply and control pastel color just like true painting. Fully compatible with traditional pastel sticks and loaded with high quality pigments. Can even be applied with a knife. California Retailers: The manufacturer of this product recommends that you post a Safe Harbor Statement with this product. Includes 4 Sofft tools.


text:
Education for Girls and Boys alike
- 53 Posts
UNICEF to expand Child-to-Child education programme
All over the world, millions of young boys and girls are unable to get proper education. In countries like India, Nepal, Colombia and various parts of Africa, girls are often married off and boys are forced to work on the streets to earn a living for their family. Resources like clean water, food and shelter are perhaps not even available, however we must consider the premium of education. The key to ending the global chain, that perpetuates itself and has done so for centuries, is to implement universal education for ALL CHILDREN IN THE WORLD. It is not impossible to make sure that every child receives some education, adequate enough to prepare them for jobs, careers and later successes in life.
UNICEF has taken great measures to improve these situations by implementing programs such as the Child-to-Child initiative. Although we are becoming aware of these general problems, there is one crucial part of understanding that we are a missing, a piece of the puzzle that is lost, or so to say: the disparity in availability of education based on gender. Boys are some 85% more likely to receive some educational/ formal instructional guidance in their life than girls. In some countries, girls are shunned from society as sole child bearers and nothing more. What good is that when we have so many female leaders in the world: Hilary Clinton, Dilma Roussef, Angela Merkel? We should embrace the potential that girls have as equally as we embrace that of boys. By saying this, we should consider huge reform. Schools should be open to children of both genders and every child should receive equal resources. Listen to what Malala Yousafzai said! The 16 year old girl from Pakistan was a renegade for rights to education for girls in her village in Pakistan. Her outcry led to a pouring of support from all over the world that called for improvement in accessibility of education for girls. The Taliban was left out of it all and everyone looked at it in a simple way: humanely. Malala spoke at the UN General Assembly and addressed practically the whole world about this terrible plight. What can we do? It's simple...start changing mindsets. Hand in hand, one at a time, we can all do something to help. The only thing to remember is that revolutions don't arise in minutes. With hard work and perseverance, we can achieve equality in education for everyone around the world.Can a woman become a genius of the first class? Nobody can know unless women in general shall have equal opportunity with men in education, in vocational choice, and in social welcome of their best intellectual work for a number of generations.---Anna Garlin Spencer


text: In a game that had a little of everything, it was only fitting that the ending came down to one pitch for Augusta's triple-A legion baseball team. Stuart Kelley had a full count with a runner at third and two outs in the top of the seventh as he was trying to close the game for the Orioles. Kelley lined up a fast ball and got the McPherson batter swinging for a strikeout, preserving a 7-6 victory. McPherson got revenge in the second game in a 12-4 rout of the Orioles for the split. For the first couple of innings, the opening game belonged to Blake Wallace of Augusta. Wallace, who will be a sophomore at Collegiate next school year, threw six strikeouts and stymied McPherson the first time through the lineup. But as the game wore on and the heat took its toll, McPherson changed up its game plan. McPherson got two straight bunt singles toward third base, then moved the runners to second and third on another bunt. Two batters later, McPherson took a 1-0 lead with an RBI single. Wallace threw his first wild pitch of the game that allowed another run to score. McPherson tacked on a 2-RBI base hit for a 4-0 lead. Augusta had a chance to get on the scoreboard early. The Orioles drew back-to-back walks and advanced to second and third with no outs after an error. But the Orioles couldn't push any runs across home plate. In the fifth inning, Augusta loaded the bases after Ryan Bevan was hit by a pitch, Tanner Line singled and Chad Izzo hit an infield single. Stuart Kelley drew a walk, which drove in Augusta's first run to cut the deficit to 4-1. Alex Brown then smacked a 2-RBI single to left-center field, putting runners on the corners. A wild pitch during the next at-bat allowed Kelley to score, tying the game 4-4. Augusta added two more runs in the inning to take a 6-4 lead. Back came McPherson in the top of the sixth. It scored two runs, one unearned, to tie the game. In the bottom of the inning, Kelley had a two-out single, then scored after Brown singled and McPherson made a misplay in the field that gave up extra bases. In the final inning, Kelley hit McPherson's lead-off batter, who eventually was moved around to third base with two outs. But Kelley came through with the final strikeout to close the game. In Game 2, McPherson jumped out to a 3-0 lead and never looked back. The errors crept up on the Orioles. That didn't help Kelley, who pitched a large portion of the game for Augusta. The Orioles' next games are this Friday against Wellington.


text: We're so sure you'll love our products, we're giving you our 30-day money back gurantee. If you're not completely satisfied, simply return the product to us within 30 days from the purchase date for a refund of the purchase price. less shipping and handling. See our Return Policy for full details. Return are limited only to purchases made on AViiQ.com and excludes purchases from other sites. For Return of products purchased on other website or retailers, please contact the retailer where the product was purchased.


text:
The Internet Engineering Task Force (IETF®)
The goal of the IETF is to make the Internet work better.
The mission of the IETF is to make the Internet work better by producing high quality, relevant technical documents that influence the way people design, use, and manage the Internet. Newcomers to the IETF should start here.
The Internet Engineering Task Force (IETF) is an organized activity of the Internet Society (ISOC).
ISOC is a non-profit organization founded in 1992 to provide leadership in Internet-related standards, education, and policy. It is dedicated to ensuring the open development, evolution and use of the Internet for the benefit of people throughout the world. See: www.internetsociety.org