public class Main
extends javafx.application.Application
| Modifier and Type | Field and Description |
|---|---|
private Connect4 |
connect4
reference to the game form of the application
|
private ConnectingForm |
connectingForm
reference to the connecting form of the application
|
private Lobby |
lobby
reference to the lobby of the application
|
private LoginForm |
loginForm
reference to the login form of the application
|
private javafx.scene.Scene |
mainScene
main scene of the application
|
private javafx.stage.Stage |
primaryStage
primary stage of the application
|
private ReceivedGameRequestForm |
receivedGameRequestForm
reference to the received game request form of the application
|
private javafx.scene.layout.BorderPane |
root
root node (element) of the application
|
private TCPClient |
tcpClient
reference to a TCP client
|
private static java.lang.String |
TITLE
title of the window
|
private WaitingForGameRequestForm |
waitingForGameRequestForm
reference to the waiting for game request form of the application
|
| Constructor and Description |
|---|
Main() |
| Modifier and Type | Method and Description |
|---|---|
void |
acceptGameRequest(java.lang.String nick)
Accepts the game request
|
void |
addNewOnlineUser(java.lang.String nick)
Adds a new clint on the list of online clients
currently connected to the server.
|
void |
cancelGame()
Cancels the currently played game
|
void |
cancelGameRequest(java.lang.String nick)
Cancels the currently sent game request
|
void |
changeStateOfUser(java.lang.String nick,
boolean available)
Changes the current state of the client given as a parameter
|
private void |
closeConnection()
Closes the connection to server when
the application closes
|
void |
colorWinningTails(java.util.List<int[]> tails)
Colors the winning disks (tails) - received from the server
|
private void |
createAllForms()
Creates all the forms of the application
(lobby, login form, ...).
|
private javafx.scene.Parent |
createContent()
Creates the content of the application - the root
element as well as all the forms (login form, ...)
|
void |
createNewTCPClient(java.lang.String ip,
int port,
java.lang.String nick)
Creates a new TCP client
|
void |
disconnectFromServer()
Disconnects from the user from the server
|
void |
displayConnectingForm()
Displays the connecting form of the application
|
void |
displayConnectingForm(java.lang.String connectingInfo)
Displays the connecting form
|
void |
displayLobby()
Displays the lobby of the application
|
void |
displayLoginForm()
Displays the login form of the application
|
void |
displayReceivedGameRequestForm(java.lang.String nick)
Displays the received game request form of the application
|
void |
displayWaitingForGameRequestForm(java.lang.String nick)
Displays the waiting for game request form
of the application.
|
void |
gameCanceled(java.lang.String msg)
Cancels the the game (from the server)
|
void |
gameRecovery(java.util.List<int[]> data)
Game recovery - when the user loses their connection and
then gets connected back to the server within the defined time
|
void |
gameStart(java.lang.String nick)
Start of a new game against the client whose
nick if given as a parameter.
|
static void |
main(java.lang.String[] args)
The entry point of the program
|
void |
playGame(int xPosition)
Plays the game (one turn)
|
void |
playGame(int y,
int x,
boolean player1)
Places a disk on the grid of disks
|
void |
rejectGameRequest(java.lang.String nick)
Rejects the game request
|
void |
removeOnlineUser(java.lang.String nick)
Removes the client given as a parameter from the list
of online client currently connected to the server
|
void |
sendGameRequest(java.lang.String nick)
Sends a game request to the client given as a parameter
|
void |
setGameMsg(java.lang.String msg)
Sets a game message (message received from the server)
|
void |
setGameResultMsg(java.lang.String msg)
Displays the result of the game
|
void |
setLobbyNick(java.lang.String nick)
Sets the user's name in the title
of the lobby of the game
|
void |
start(javafx.stage.Stage primaryStage)
Method start overridden from the class Application (JavaFX)
|
private static final java.lang.String TITLE
private javafx.stage.Stage primaryStage
private javafx.scene.Scene mainScene
private javafx.scene.layout.BorderPane root
private TCPClient tcpClient
private LoginForm loginForm
private ConnectingForm connectingForm
private Lobby lobby
private WaitingForGameRequestForm waitingForGameRequestForm
private ReceivedGameRequestForm receivedGameRequestForm
private Connect4 connect4
public void displayLoginForm()
public void gameStart(java.lang.String nick)
nick
- nick of the client's opponentpublic void gameRecovery(java.util.List<int[]> data)
data
- the last state of the game before the used got disconnectedpublic void setGameResultMsg(java.lang.String msg)
msg
- message containing the result of the gamepublic void displayConnectingForm()
public void setLobbyNick(java.lang.String nick)
nick
- the user's namepublic void displayWaitingForGameRequestForm(java.lang.String nick)
nick
- nick of the client the game request has been sent topublic void displayReceivedGameRequestForm(java.lang.String nick)
nick
- nick of the client who sent the game requestpublic void cancelGame()
public void playGame(int xPosition)
xPosition
- x position on the board where the player
wants to place their disk.public void changeStateOfUser(java.lang.String nick, boolean available)
nick
- nick a status of whom is going to be changedavailable
- the new status of the clientpublic void gameCanceled(java.lang.String msg)
msg
- msg received from the server (why the was was canceled)public void setGameMsg(java.lang.String msg)
msg
- game message from the serverpublic void colorWinningTails(java.util.List<int[]> tails)
tails
- list of coordinates of the winning tailspublic void removeOnlineUser(java.lang.String nick)
nick
- nick of the client that is going to be removedpublic void addNewOnlineUser(java.lang.String nick)
nick
- nick of the newly-connected clientpublic void sendGameRequest(java.lang.String nick)
nick
- nick of the client who is the game request
going to be sent topublic void cancelGameRequest(java.lang.String nick)
nick
- nick of the client who the game request was sent topublic void createNewTCPClient(java.lang.String ip, int port, java.lang.String nick)
ip
- ip address of the serverport
- number of the port the server is running onnick
- the user's nicknamepublic void acceptGameRequest(java.lang.String nick)
nick
- nick of the client who sent the game requestpublic void rejectGameRequest(java.lang.String nick)
nick
- nick of the client who sent the game requestpublic void displayConnectingForm(java.lang.String connectingInfo)
connectingInfo
- information about the connection
that is trying to be established (ip, port, ...)public void disconnectFromServer()
public void playGame(int y, int x, boolean player1)
y
- y position of the diskx
- x position of the diskplayer1
- true/false if it is player1 or player2public void displayLobby()
private void createAllForms()
private javafx.scene.Parent createContent()
private void closeConnection()
public void start(javafx.stage.Stage primaryStage) throws java.lang.Exception
start
in class javafx.application.Application
primaryStage
- primary stage of the applicationjava.lang.Exception
- exception if something goes wrongpublic static void main(java.lang.String[] args)
args
- argument from the command line - not used


HashRouter takes advantage of javascript object notation for designing routes that are easier to read and write than a regular expression. (Ok, that's subjective but we think they are.)
Perhaps you are using HashRouter for a site on baking. You've got a number of variables that you want the url to manage.
Urls without routes would look like:
Here is the route for this site:
var routes = {
mode : {
list : {
sort : {
_ : {
direction : {}
}
}
},
edit : {
recipeID : {}
},
view : {
recipeID : {
_ : {
pictures : {}
}
}
}
}
};
The 'mode' variable is the first one in the url, and is therefore the root level item in our object. It has three possible values: list, edit, and view. When the route decoder finds a match it moves into that part of the object tree.
The routes use an underscore _ to match any value. In this example, the sort column can be any value, and the next variable will still be direction.
The decoder is smart enough to back up if it finds that your route contained variables it couldn't parse. It will then continue down the route tree trying to find a match.


about.
common questions
Q: how do i pronounce my name?
a: XU as in "shoe", R however you like, and XE rhyming with "meh".
Q: what are my pronouns?
a: he / him / his.
Q: why do i write "i" in lowercase?
a: i have a small ego.
Q: why do i barely use capital letters?
a: for the aesthetic.
biography
1990
i was born in Galicia, Spain.
1993
my family moved to a village in the Galician countryside, where I attended Spanish primary and secondary school.
2007
thanks to an UWC scholarship, I moved to Costa Rica for 2 years to study International Baccalaureate at United World College Costa Rica.
2009
thanks to several scholarships, I moved to the US to pursue Bachelor's degrees at Cornell University.
2014
i graduated from Cornell with a B.Sc. in Agricultural Sciences, a B.Sc. in Plant Science, a minor in LGBT studies, and double honors (Magna Cum Laude and Distinction in Research).
2015
i took a leap of faith by moving to Helsinki without the safety net of a scholarship or an employment position.
2015 - 2019
i worked a number of not-so-interesting jobs while making art and discovering the joy of coding on the side.
2019
i joined the Integrify program so i could become a web developer!


Free Membership
Register for instant access and Adventure Pass updates.
Preview our membership options:
Club Membership
10% discount at all Partner locations
Free T-shirt
Sport Membership
15% discount at all Partner locations
Free T-shirt
Premier Membership
15% discount at all Partner locations
Bring a new friend every time for free!
Free T-shirt


Inside FFF
Invite Intro
- Use to announce a demo party event
- 10 days
- Do something fun
Particles on GPU
- Why on gpu ?
- Previous work - firefox, google
- Particles master - the beginning
How to move particles on gpu
- 3 buffers 512x512 = 262k particles in 24 bits
- distance map 1, 2 fit shapes - generator/octave
- procedural velocity field - mathgl/udav
Music
- Input pattern data
- Timeline.js sync events
Model 3D
- Data exported from blender
- Convert 3D point to texture


{% load static %}
Heard about Bitcoins? We can say Blockchain is the backbone of this cryptocurrency. With the advent of Smart Contracts and Turing-complete frameworks, it's time to join the revolution of WEB 3.0.
For advanced experiences, engage yourself with Real Industry 4.0 Application. Every sector is soon going to be impacted by the rise of VR/AR.
This industry is currently the second biggest for disruption, after health care. A wave of digital disruption technology is starting to reshape this sector.
With the rise of crimes like mugging, burglary, robbery, and harassment, today’s women are more susceptible to a perilous environment. Delineate a solution to deal with it innovatively.
A more efficient and planned city makes living more advanced. Build unique, feasible and innovative solutions to contain large eco growth and improve the quality of citizens.
AI is for the tech-savvy that brings smart machines to perform tasks with human intelligence. Bring awesome AI-based ideas for modern problems.
Health care is the maintenance or improvement of health via the prevention, diagnosis, treatment, recovery, etc. It is delivered by health professionals in allied health fields. Engage yourself in building some very powerful solutions related to current COVID-19 pandemic challenges.


Thank you for making your request.
You have requested:
Your request is now available for local farmers to review.


Neutral Geometry
Now, we will start with the fundamental ideas of geometry starting with neutral geometry. Neutral geometry is the most basic of all geometries. It is in essence Euclidean Geometry without Euclid's Parallel Postulate. Surprisingly, much can be derived without knowing if two lines are parallel. That being said we will use Hilbert's Axioms instead of Euclid's Postulates in order to prove many of the theorems that you may or may not have recognized in your geometry class.
As you will see later, Euclid had many assumptions in mind (this may sound like your middle school or high school geometry) which later mathematicians eventually made evident. Although much of these concepts are pretty intuitive, the mathematical jargon does indeed obscure much of the meaning and application behind these powerful concepts. This website presents these concepts in a light where only algebra is required.
Algebra and geometry are more similar than many people believe. Like algebra has its definitions and properties for numbers and operators and functions, geometry also has similar definitions and properties for points, lines, planes. More specifically, numbers correspond to length and direction (angle). Operators and functions correspond to the constructions that give meaning to these geometric creations.
What remains the same regardless of the problem being algebraic or geometric is the way to prove a certain relationship. Axioms, Definitions, and Properties are still used to prove Propositions, Lemmas, and Theorems. What applies to algebra also applies to geometry making them both within the realms of mathematics.
One thing to note is that while algebra is built on abstract concepts like numbers and counting, geometry is built on visual concepts like points and lines. However, contrary to contrary belief, THIS DOES NOT MAKE GEOMETRY ANY EASIER THAN ALGEBRA!!!
Here is a table to show the connections between Algebra and Geometry.
| Algebra | Geometry |
|---|---|
| Numbers (Measurement) | Distance and Angles |
| Numbers (Abstract Objects) | Points, Lines, Planes |
| Operators and Functions | Constructions (Figures) which consist of many geometric objects |
| Axioms, Definitions and Properties | Axioms, Definitions and Properties |
| Propositions, Lemmas and Theorems | Propositions, Lemmas and Theorems |


Try out our Premium Member services: Virtual Legal Assistant, Query Alert Service and an ad-free experience. Free for one month and pay only if you like it.
1 IN THE HIGH COURT OF JUDICATURE AT MADRAS DATED: 25.06.2019 CORAM: THE HONOURABLE MR.JUSTICE R.SUBBIAH and THE HONOURABLE MR.JUSTICE C.SARAVANAN W.P.Nos.16940, 16947, 16951, 16953, 16957 and 16961 of 2019 and W.M.P.Nos.16512, 16514, 16516, 16517, 16520 and 16524 of 2019 M/s.K.N.S.Blue Metals, Rep. by its Proprietor, Mr.N.Subramani, S.F.No.77/10, Keerapakkama Village, Chengalpattu Taluk, Kancheepuram District. .. Petitioner in W.P.No.16940 of 2019 M/s.M.R.S.Blue Metals Unit-I, Rep. by its Proprietor, Mr.S.Nagarathinam, S.F.No.79/1B, Keerapakkam Village, Chengalpattu Taluk, Kancheepuram District. .. Petitioner in W.P.No.16947 of 2019 M/s.M.R.S.Blue Metals Unit-II (formerly SGP Shri Enterprises), Rep. by its Proprietor, Mr.S.Nagarathinam, S.F.No.76/1A, 76/1B, Keerapakkam Village, Chengalpattu Taluk, Kancheepuram District. .. Petitioner in W.P.No.16951 of 2019 M/s.R.K.Crushers, Rep. by its Proprietor, http://www.judis.nic.in 2 Mr.B.Vijayakumaren, S.F.No.79/5, Keerapakkam Village, Chengalpattu Taluk, Kancheepuram District. .. Petitioner in W.P.No.16953 of 2019 M/s.Sri Ram Blue Metals, Rep. by its Proprietor, Mr.A.L.Krishnakumar, S.F.No.77/7A, Keerapakkam Village, Chengalpattu Taluk, Kancheepuram District. .. Petitioner in W.P.No.16957 of 2019 M/s.Sri Sakthi Blue Metals, Rep. by its Proprietor N.Subramani, S.F.No.77/7B, 77/8 & 77/9, Keerapakkam Village, Chengalpattu Taluk, Kancheepuram District. .. Petitioner in W.P.No.16961 of 2019 Vs. 1. The Tamil Nadu Pollution Control Board, Rep. by its Chairman, No.76, Anna Salai, Guindy, Chennai-600 032. 2. The District Environmental Engineer, Tamil Nadu Pollution Control Board, Maraimalainagar. .. Respondents in all the Writ Petitions
Writ Petition No.16940 of 2019 is filed under Article 226 of the Constitution of India, praying for issuance of a Writ of Mandamus to direct the respondents to make an inspection of the petitioner-Unit situate at S.F.No.77/10, Keerapakkam Village, Chengalpattu Taluk, Kancheepuram District, with regard to the deficiencies pointed out in the Show Cause Notice dated 26.04.2019 and afford a reasonable opportunity to the petitioner to submit his compliance status http://www.judis.nic.in 3 before passing final orders in accordance with law, in pursuance of the Show Cause Notice, dated 26.04.2019.
Writ Petition No.16947 of 2019 is filed under Article 226 of the Constitution of India, praying for issuance of a Writ of Mandamus to direct the respondents to make an inspection of the petitioner-Unit situate at S.F.No.79/1B, Keerapakkam Village, Chengalpattu Taluk, Kancheepuram District, with regard to the deficiencies pointed out in the Show Cause Notice dated 26.04.2019 and afford a reasonable opportunity to the petitioner to submit his compliance status before passing final orders in accordance with law, in pursuance of the Show Cause Notice, dated 26.04.2019.
Writ Petition No.16951 of 2019 is filed under Article 226 of the Constitution of India, praying for issuance of a Writ of Mandamus to direct the respondents to make an inspection of the petitioner-Unit situate at S.F.No.76/1A, 76/1B, Keerapakkam Village, Chengalpattu Taluk, Kancheepuram District, with regard to the deficiencies pointed out in the Show Cause Notice dated 26.04.2019 and afford a reasonable opportunity to the petitioner to submit his compliance status before passing final orders in accordance with law, in pursuance of the Show Cause Notice, dated 26.04.2019.
Writ Petition No.16953 of 2019 is filed under Article 226 of the Constitution of India, praying for issuance of a Writ of Mandamus to direct the respondents to make an inspection of the petitioner-Unit situate at S.F.No.79/5, Keerapakkam Village, Chengalpattu Taluk, Kancheepuram District, with regard to the deficiencies pointed out in the Show Cause Notice dated 26.04.2019 and afford a reasonable opportunity to the petitioner to submit his compliance status before passing final orders in accordance with law, in pursuance of the Show Cause Notice, dated 26.04.2019.
Writ Petition No.16957 of 2019 is filed under Article 226 of the Constitution of India, praying for issuance of a Writ of Mandamus to direct the http://www.judis.nic.in 4 respondents to make an inspection of the petitioner-Unit situate at S.F.No.77/7A, Keerapakkam Village, Chengalpattu Taluk, Kancheepuram District, with regard to the deficiencies pointed out in the Show Cause Notice dated 26.04.2019 and afford a reasonable opportunity to the petitioner to submit his compliance status before passing final orders in accordance with law, in pursuance of the Show Cause Notice, dated 26.04.2019.
Writ Petition No.16961 of 2019 is filed under Article 226 of the Constitution of India, praying for issuance of a Writ of Mandamus to direct the respondents to make an inspection of the petitioner-Unit situate at S.F.No.77/7B, 77/8 & 77/9, Keerapakkam Village, Chengalpattu Taluk, Kancheepuram District, with regard to the deficiencies pointed out in the Show Cause Notice dated 26.04.2019 and afford a reasonable opportunity to the petitioner to submit his compliance status before passing final orders in accordance with law, in pursuance of the Show Cause Notice, dated 26.04.2019.
For petitioners : Mr.V.Suthakar For respondents: Mr.Abdul Saleem COMMON ORDER (The Common Order of the Court was made by R.Subbiah,J) The petitioners have come forward with the present Writ Petitions praying for issuance of Writs of Mandamus to direct the respondents to make inspection of the respective units of the petitioners situated at Keerapakkam Village, Chengalpattu Taluk, Kancheepuram District, with regard to the deficiencies pointed out in the Show Cause Notice(s) dated 26.04.2019 and afford a http://www.judis.nic.in 5 reasonable opportunity to the petitioner-Units to submit their compliance status before passing final orders in accordance with law, in pursuance of the Show Cause Notice(s), dated 26.04.2019.
2. It is the case of the petitioner-Units that they are running stone crushing units in the respective survey numbers at Keerapakkam Village, Chengalpet Taluk, Kancheepuram District. The petitioners' lands are classified as "non area" and there is no prohibition to carry on the stone crushing activity in the said property(ies). Apart from the petitioner-Units, there are more than 13 other stone crushers, and the same are being operated with the consent of the respondent-TNPCB. The petitioner-stone crushing industries are coming under the "Orange Category" industries as per the norms prescribed by the Tamil Nadu Pollution Control Board (TNPCB). Hence, the persons who are running the stone crushing units have to obtain consent/permission from the TNPCB both under the Air (Prevention and Control of Pollution) Act and the Water (Prevention and Control of Pollution) Act. Thought the petitioner-Units have obtained consent from various authorities, they did not obtain the consent from the TNPCB till 2008 and in 2008, the respondent-TNPCB issued a closure notice stating that the petitioner-Units are being operated without valid consent from the TNPCB and did not install adequate air pollution control measures. Thereafter, the petitioner- Units and other Units installed necessary air pollution control measures. On the application made by the petitioner-Units for grant of consent both under the said http://www.judis.nic.in 6 Acts in the year 2008, the second respondent's officials inspected the premises and on being satisfied that the petitioner-Units are having adequate air and water pollution control measures, granted consent to operate the Units in the year 2008 under both the Acts. Initially, the consent was only for a period of one year and thereafter, it was periodically renewed once in two years and last such renewal of consent was given to the petitioner-Units on the following dates:
(i) 09.07.2018 which is valid till 31.03.2024 (W.P.No.16940 of 2019);
(ii) 19.06.2018 which is valid till 31.03.2024 (W.P.No.16947 of 2019);
(iii) 28.12.2017 which is valid till 31.03.2022 (W.P.No.16951 of 2019);
(iv) 23.06.2017 which is valid till 31.03.2021 (W.P.No.16953 of 2019);
(v) 23.06.2017 which is valid till 31.03.2021 (W.P.No.16957 of 2019), and
(vi) 12.07.2018 which is valid till 31.03.2024 (W.P.No.16961 of 2019).
3. It is the further case of the petitioner-Units that whenever the authorities grant renewal of consent, they used to inspect the Unit and only after satisfying that the conditions attached to the consent orders are being complied with and all pollution control measures are installed properly by the petitioner- Units, the respondent-TNPCB granted renewal of the consent periodically and the petitioner-Units had paid the consent fees to run the Units upto the valid dates noted above.
http://www.judis.nic.in 7
4. While so, there is no complaint whatsoever from the public right from the year of establishment of the respective Units with regard to the stone crushing activities undertaken by the petitioner-Units. While so, sometime in the year 2015, the Border Security Force (BSF) was allotted 28 acres of land adjacent to the petitioner-Units by the Government of Tami Nadu to have their training camp, residential quarters, etc. Though the BSF had taken possession of the land, as on date, they had put up only semi-permanent structure in the said 28 acres of land, and as on date, no activity is taking place in the land allotted to the BSF.
5. The petitioners were under the bona-fide belief that running the stone crushing units by them will not be hampered due to the establishment of the training camp by BSF adjacent to their Units. The cluster of Units have put up a temporary structure on the side where the BSF was allotted lands by raising 20 feet wall to avoid any dust emission, apart from existing air pollution control measures adopted by the Units. It seems that the BSF had given a complaint to the second respondent in the month of April 2019 stating that the stone crushing units situated at Keerapakkam Village are causing serious air pollution, based on which, the respondent-Board officials inspected the premises of the Units on 23.04.2019. Immediately on 26.04.2019, the second respondent issued cyclo- styled show cause notices to the petitioner-Units and similarly situated stone http://www.judis.nic.in 8 crushing units by pointing out the violation of consent conditions that are identical with regard to air pollution, viz.:
(i) The Units have not provided water sprinklers of adequate capacity to control the dust emission from the bunker, jaw crushers, vibrating screen, conveyor and stone powder storage silo.
(ii) The Units have not maintained the MS hood enclosures to the jaw crushers and vibrating screens and the same were in damaged condition.
(iii) The Units have not developed adequate green belt all around the premises for suppression of dust emission.
(iv) The Units have not provided telescope chutes at the product unloading conveyor or to prevent dust release into the atmosphere during free fall off material from height.
(v) Fine dust spreads all along the vehicular movement area and affecting the health of the nearby public.
6. It is the grievance of the petitioner-Units that even though they are having all pollution control measures and running the Units for the past several years, all of a sudden the second respondent had observed that the petitioner- Units had violated the consent conditions by not adopting the pollution control measures.
http://www.judis.nic.in 9
7. Hence, the petitioner-Units have given reply on 17.05.2019 stating that they would revert back to the second respondent with action taken report by improving all pollution control measures, if required and submit the same on or before 31.07.2019. While so, on 30.06.2019, one M/s.G.S.Blue Metal, which is running the Unit from the year 2008 with valid consent and which has also applied for renewal of consent after its expiry, was directed to be closed by the respondent-TNPCB on the ground that they do not have valid consent and also pointed out the deficiencies with regard to the pollution control measures. Hence, the petitioner-Units apprehend that even though they are running the Units with valid consent and had installed air pollution control measures, the second respondent may pass order of closure in haste and mechanically by simply reproducing the deficiencies which are mentioned in the show cause notices.
8. A common counter affidavit is filed by the respondents questioning the maintainability of the Writ Petitions.
9. When the Writ Petitions are taken up for consideration, the learned counsel for the petitioner-Units made submissions adverting to the averments made in the affidavit filed in support of the Writ Petitions. The learned counsel for the petitioners submitted that the petitioner-Units undertake that they will shift their Units once the training camp and residential quarters of BSF have become fully operational and further undertakes that until such time, they will http://www.judis.nic.in 10 carry on their activities by following all pollution control measures in accordance with law.
10. It is seen that closure order of the petitioner-Units have been passed under Section 31-A of the Air (Prevention and Control of Pollution) Act (as amended) on 11.06.2019 by the first respondent including disconnection of power supply. Though the petitioner-Units have only sought for Mandamus in these Writ Petitions as stated supra, the only remedy available to the petitioner- Units is to file appeal before the appropriate authority under the said Air (Prevention and Control of Pollution) Act, (as amended). However, the petitioner- Units submitted that the said closure order of the petitioner-Units is passed during the pendency of the present Writ Petitions. It is also submitted that inspection was also conducted by the respondent-authorities before passing the closure order.
11. Though the abovesaid undertaking is given by the learned counsel for the petitioner-Units, who also submitted that the respondents may be directed to withdraw the closure order and permit the petitioner-Units to carry on their crushing activities till the training camp and residential quarters of BSF have become fully operational, we are not inclined to accept such undertaking and the said submission made by the learned counsel for the petitioner-Units, as already the closure orders have been passed in respect of the petitioner-Units, pending these Writ Petitions. Such being the case, this Court cannot direct the http://www.judis.nic.in 11 respondents to withdraw the closure orders and permit the petitioner-Units to run the crushing process. The proper remedy open to the petitioner-Units is to file appeal before the appropriate authority under the provisions of the Air (Prevention and Control of Pollution) Act, as amended, since the said closure order was passed under Section 31-A of the said Act. Hence, the petitioners are at liberty to file appeal before the appropriate authority under the said Act and on filing of such appeal, the appropriate authority shall dispose of such appeals on merits and in accordance with law, within a period of eight weeks from the date of filing of such appeals.
12. With the above observations/direction, the Writ Petitions are dismissed. No costs. Consequently, W.M.Ps. are closed.
(R.P.S.J) (C.S.N.J) 25.06.2019 Speaking Order: Yes/no cs To 1. The Tamil Nadu Pollution Control Board, Rep. by its Chairman, No.76, Anna Salai, Guindy, Chennai-600 032. http://www.judis.nic.in 12 2. The District Environmental Engineer, Tamil Nadu Pollution Control Board, Maraimalainagar. R.SUBBIAH, J and C.SARAVANAN, J cs W.P.Nos.16940, 16947, 16951, 16953, 16957 and 16961 of 2019 http://www.judis.nic.in 13 25.06.2019 http://www.judis.nic.in


Unix scripts created within the
PuTTY
enviroment using the Vim editor.
As well as C++ scripts utilizing unix commands.
Script reads a file and checks for spellings errors.
If a spelling error is found the script will ask the user if the error is to be
corrected or if the word is to be remembered as a valid word.
Source Code
AWK script that produces a report from the an input file of sales data.
Input file contains data from over several years but the script is only made to only show the 2014 report.
Script invoked from command line via: awk f z1771209.report Input6.txt
Source Code
Input Data
C++ program utilizing Unix commands to add messages to a file that lacks permission for all users.
Source Code
The interpreter should repeatedly print a prompt and wait for the user to enter a command with arguments.
The command can be any executable file. It should be found in any directory listed in the PATH environment variable.
The user can specify up to 4 arguments or options to the command.
After reading the command, the interpreter should perform the command with its arguments,
wait for its outcome, and then prompt the user for the next command.
Upon reading the special command exit, the command interpreter should stop.
Source Code
C++ program that in a loop listens on a port for incoming TCP requests from clients.
For each accepted incoming request it forks a child to read and process the request.
The parent process continues to listen and accept incoming TCP requests in an endless loop.
Source Code for Primary Client
Source Code for TCP Client


Deal With It: Tips for Mistake-Free Dealing in Home Games
I play in many home games — all over the world. Some of these have professional dealers. Most of them do not, with each player taking his or her turn dealing the cards. Unfortunately, these self-dealt home games are sometimes riddled with mistakes and disputes over how a hand was dealt. I've seen many players who really need a lesson in how to deal. This is that lesson. The dealer typically has a couple of principal responsibilities: (1) shuffle the deck so the cards are properly randomized (and without exposing them); and (2) deal the cards relatively quickly and accurately (again, without exposing them). In some games the dealer handles both of these duties for each turn of the deal. In other games the tasks are broken up, withone player doing the shuffling of one deck while the dealer deals from a second deck. I've found the following procedures to work the best. Having two decks definitely speeds up the game, even if it may be a little confusing at first, so I'm referring to the two-deck method in what I describe below.


Home
(current)
Features
Pricing
Product-List
Fish And Meat
Daily Needs
Beverges
Search
Welcome to Our Online Shop
Barca new jersey
Manchester United Third Replica Custom Jersey
Real Madrid
Juventus new Jersey
Belts
Hats & Caps
Sunglasses
Scarves
Casual
Casio-A833
Sport
Ladies Bag
Trolly Bag
Laptop Bags
Briefcases
jersey
Accessories
Watches
Bags
Jersey
Mobile phone
Fresh Soyabeen Oil
Our Product Categories
Fruits and Vegetables
Meat And Fish
Sports
Cooking
Electronics
Beverages
Special discount Offer
Previous
Next
45% Discount
...
How to Order From .....
© 2018 | All Rights Reserved | www.E-com.com | 24x7 support | Email us: sayem243@gmail.com


{% trans %} Help us congratulate our last group of Early Entry Award winners who automatically qualify for the Grand Prize. {% endtrans %}
{{ _('Read the blog post') }} * {{ _('English only') }}


Functions | |
| bool | CxImage::Rotate (float angle, CxImage *iDst=NULL) |
| bool | CxImage::Rotate2 (float angle, CxImage *iDst=NULL, InterpolationMethod inMethod=IM_BILINEAR, OverflowMethod ofMethod=OM_BACKGROUND, RGBQUAD *replColor=0, bool const optimizeRightAngles=true, bool const bKeepOriginalSize=false) |
| bool | CxImage::Rotate180 (CxImage *iDst=NULL) |
| bool | CxImage::Resample (long newx, long newy, int mode=1, CxImage *iDst=NULL) |
| bool | CxImage::Resample2 (long newx, long newy, InterpolationMethod const inMethod=IM_BICUBIC2, OverflowMethod const ofMethod=OM_REPEAT, CxImage *const iDst=NULL, bool const disableAveraging=false) |
| bool | CxImage::DecreaseBpp (DWORD nbit, bool errordiffusion, RGBQUAD *ppal=0, DWORD clrimportant=0) |
| bool | CxImage::IncreaseBpp (DWORD nbit) |
| bool | CxImage::Dither (long method=0) |
| bool | CxImage::Crop (long left, long top, long right, long bottom, CxImage *iDst=NULL) |
| bool | CxImage::Crop (const RECT &rect, CxImage *iDst=NULL) |
| bool | CxImage::CropRotatedRectangle (long topx, long topy, long width, long height, float angle, CxImage *iDst=NULL) |
| bool | CxImage::Skew (float xgain, float ygain, long xpivot=0, long ypivot=0, bool bEnableInterpolation=false) |
| bool | CxImage::Expand (long left, long top, long right, long bottom, RGBQUAD canvascolor, CxImage *iDst=0) |
| bool | CxImage::Expand (long newx, long newy, RGBQUAD canvascolor, CxImage *iDst=0) |
| bool | CxImage::Thumbnail (long newx, long newy, RGBQUAD canvascolor, CxImage *iDst=0) |
| bool | CxImage::CircleTransform (int type, long rmax=0, float Koeff=1.0f) |
| bool | CxImage::RedEyeRemove (float strength=0.8f) |
| bool | CxImage::QIShrink (long newx, long newy, CxImage *const iDst=NULL, bool bChangeBpp=false) |
| bool CxImage::CircleTransform | ( | int | type, | |
| long | rmax = 0 , |
|||
| float | Koeff = 1.0f | |||
| ) | [inherited] |
Perform circle_based transformations.
| type | - for different transformations
| |
| rmax | - effect radius. If 0, the whole image is processed | |
| Koeff | - only for swirle |
| bool CxImage::Crop | ( | const RECT & | rect, | |
| CxImage * | iDst = NULL | |||
| ) | [inherited] |
| bool CxImage::Crop | ( | long | left, | |
| long | top, | |||
| long | right, | |||
| long | bottom, | |||
| CxImage * | iDst = NULL | |||
| ) | [inherited] |
| bool CxImage::CropRotatedRectangle | ( | long | topx, | |
| long | topy, | |||
| long | width, | |||
| long | height, | |||
| float | angle, | |||
| CxImage * | iDst = NULL | |||
| ) | [inherited] |
CropRotatedRectangle
| topx,topy | : topmost and leftmost point of the rectangle (topmost, and if there are 2 topmost points, the left one) | |
| width | : size of the right hand side of rect, from (topx,topy) roundwalking clockwise | |
| height | : size of the left hand side of rect, from (topx,topy) roundwalking clockwise | |
| angle | : angle of the right hand side of rect, from (topx,topy) | |
| iDst | : pointer to destination image (if 0, this image is modified) |
| bool CxImage::DecreaseBpp | ( | DWORD | nbit, | |
| bool | errordiffusion, | |||
| RGBQUAD * | ppal = 0 , |
|||
| DWORD | clrimportant = 0 | |||
| ) | [inherited] |
Reduces the number of bits per pixel to nbit (1, 4 or 8). ppal points to a valid palette for the final image; if not supplied the function will use a standard palette. ppal is not necessary for reduction to 1 bpp.
| bool CxImage::Dither | ( | long | method = 0 |
) | [inherited] |
Converts the image to B&W using the desired method :
| bool CxImage::Expand | ( | long | newx, | |
| long | newy, | |||
| RGBQUAD | canvascolor, | |||
| CxImage * | iDst = 0 | |||
| ) | [inherited] |
| bool CxImage::Expand | ( | long | left, | |
| long | top, | |||
| long | right, | |||
| long | bottom, | |||
| RGBQUAD | canvascolor, | |||
| CxImage * | iDst = 0 | |||
| ) | [inherited] |
Expands the borders.
| left,top,right,bottom | = additional dimensions, should be greater than 0. | |
| canvascolor | = border color. canvascolor.rgbReserved will set the alpha channel (if any) in the border. | |
| iDst | = pointer to destination image (if it's 0, this image is modified) |
| bool CxImage::IncreaseBpp | ( | DWORD | nbit | ) | [inherited] |
Increases the number of bits per pixel of the image.
| nbit,: | 4, 8, 24 |
| bool CxImage::QIShrink | ( | long | newx, | |
| long | newy, | |||
| CxImage *const | iDst = NULL , |
|||
| bool | bChangeBpp = false | |||
| ) | [inherited] |
Faster way to almost properly shrink image. Algorithm produces results comparable with "high resoultion shrink" when resulting image is much smaller (that would be 3 times or more) than original. When resulting image is only slightly smaller, results are closer to nearest pixel. This algorithm works by averaging, but it does not calculate fractions of pixels. It adds whole source pixels to the best destionation. It is not geometrically "correct". It's main advantage over "high" resulution shrink is speed, so it's useful, when speed is most important (preview thumbnails, "map" view, ...). Method is optimized for RGB24 images.
| newx,newy | - size of destination image (must be smaller than original!) | |
| iDst | - pointer to destination image (if it's 0, this image is modified) | |
| bChangeBpp | - flag points to change result image bpp (if it's true, this result image bpp = 24 (useful for B/W image thumbnails)) |
| bool CxImage::RedEyeRemove | ( | float | strength = 0.8f |
) | [inherited] |
Use the RedEyeRemove function to remove the red-eye effect that frequently occurs in photographs of humans and animals. You must select the region where the function will filter the red channel.
| strength,: | range from 0.0f (no effect) to 1.0f (full effect). Default = 0.8 |
| bool CxImage::Resample | ( | long | newx, | |
| long | newy, | |||
| int | mode = 1 , |
|||
| CxImage * | iDst = NULL | |||
| ) | [inherited] |
Resizes the image. mode can be 0 for slow (bilinear) method , 1 for fast (nearest pixel) method, or 2 for accurate (bicubic spline interpolation) method. The function is faster with 24 and 1 bpp images, slow for 4 bpp images and slowest for 8 bpp images.
| bool CxImage::Resample2 | ( | long | newx, | |
| long | newy, | |||
| InterpolationMethod const | inMethod = IM_BICUBIC2 , |
|||
| OverflowMethod const | ofMethod = OM_REPEAT , |
|||
| CxImage *const | iDst = NULL , |
|||
| bool const | disableAveraging = false | |||
| ) | [inherited] |
New simpler resample. Adds new interpolation methods and simplifies code (using GetPixelColorInterpolated and GetAreaColorInterpolated). It also (unlike old method) interpolates alpha layer.
| newx,newy | - size of resampled image | |
| inMethod | - interpolation method to use (see comments at GetPixelColorInterpolated) If image size is being reduced, averaging is used instead (or simultaneously with) inMethod. | |
| ofMethod | - what to replace outside pixels by (only significant for bordering pixels of enlarged image) | |
| iDst | - pointer to destination CxImage or NULL. | |
| disableAveraging | - force no averaging when shrinking images (Produces aliasing. You probably just want to leave this off...) |
| bool CxImage::Rotate | ( | float | angle, | |
| CxImage * | iDst = NULL | |||
| ) | [inherited] |
| bool CxImage::Rotate180 | ( | CxImage * | iDst = NULL |
) | [inherited] |
| bool CxImage::Rotate2 | ( | float | angle, | |
| CxImage * | iDst = NULL , |
|||
| InterpolationMethod | inMethod = IM_BILINEAR , |
|||
| OverflowMethod | ofMethod = OM_BACKGROUND , |
|||
| RGBQUAD * | replColor = 0 , |
|||
| bool const | optimizeRightAngles = true , |
|||
| bool const | bKeepOriginalSize = false | |||
| ) | [inherited] |
Rotates image around it's center. Method can use interpolation with paletted images, but does not change pallete, so results vary. (If you have only four colours in a palette, there's not much room for interpolation.)
| angle | - angle in degrees (positive values rotate clockwise) | |
| *iDst | - destination image (if null, this image is changed) | |
| inMethod | - interpolation method used (IM_NEAREST_NEIGHBOUR produces aliasing (fast), IM_BILINEAR softens picture a bit (slower) IM_SHARPBICUBIC is slower and produces some halos...) | |
| ofMethod | - overflow method (how to choose colour of pixels that have no source) | |
| replColor | - replacement colour to use (OM_COLOR, OM_BACKGROUND with no background colour...) | |
| optimizeRightAngles | - call faster methods for 90, 180, and 270 degree rotations. Faster methods are called for angles, where error (in location of corner pixels) is less than 0.25 pixels. | |
| bKeepOriginalSize | - rotates the image without resizing. |
| bool CxImage::Skew | ( | float | xgain, | |
| float | ygain, | |||
| long | xpivot = 0 , |
|||
| long | ypivot = 0 , |
|||
| bool | bEnableInterpolation = false | |||
| ) | [inherited] |
| xgain,ygain | : can be from 0 to 1. | |
| xpivot,ypivot | : is the center of the transformation. | |
| bEnableInterpolation | : if true, enables bilinear interpolation. |
| bool CxImage::Thumbnail | ( | long | newx, | |
| long | newy, | |||
| RGBQUAD | canvascolor, | |||
| CxImage * | iDst = 0 | |||
| ) | [inherited] |
Resamples the image with the correct aspect ratio, and fills the borders.
| newx,newy | = thumbnail size. | |
| canvascolor | = border color. | |
| iDst | = pointer to destination image (if it's 0, this image is modified). |


geotiff.js
Read (geospatial) metadata and raw array data from a wide variety of different (Geo)TIFF files types.
Features
Currently available functionality:
- Parsing the headers of all possible TIFF files
- Rudimentary extraction of geospatial metadata
- Reading raster data from:
- stripped images
- tiled images
- band interleaved images
- pixel interleaved images
- Supported data-types:
- (U)Int8/16/32
- Float32/64
- Enabled compressions:
- no compression
- Packbits
- ... (more soon to follow)
- Subsetting via an image window and selected bands
- Reading of samples into separate arrays or a single pixel-interleaved array
- Configurable tile/strip cache
- Automated testing via PhantomJS
Further documentation can be found here.
Setup
To setup the repository do the following steps:
# clone repo
git clone https://github.com/constantinius/geotiff.js.git
cd geotiff.js/
# install development dependencies
npm install -g grunt-cli
npm install
Testing and Building
In order to run the tests you first have to set up the test data:
cd test/data
sh setup_data.sh
cd -
To test the library (using PhantomJS, karma, mocha and chai) do the following:
grunt test
To do some in-browser testing do:
grunt serve
and navigate to http://localhost:9000/test/
To build the library do:
grunt
The output is written to dist/geotiff.js
and dist/geotiff.min.js
.
Usage
geotiff.js works with both browserify style require
and the global variable
GeoTIFF
:
var GeoTIFF = require("geotiff.js");
or:
<script src="geotiff.js"></script>
<script>
console.log(GeoTIFF);
</script>
To actually open a GeoTIFF image use the parse
function. It works with both
strings and ArrayBuffer
and String
s:
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'arraybuffer';
xhr.onload = function(e) {
var tiff = GeoTIFF.parse(this.response);
// ...
}
xhr.send();
The same for node:
var GeoTIFF = require("geotiff");
var fs = require("fs");
fs.readFile(path, function(err, data) {
if (err) throw err;
var tiff = GeoTIFF.parse(data);
// ...
});
Each TIFF file can be comprised of multiple "subfiles", containing the actual
raster data. To get the actual images, use the getImage
method:
var image = tiff.getImage(); // or use .getImage(n) where n is between 0 and
// tiff.getImageCount()
console.log(image.getWidth(), image.getHeight(), image.getSamplesPerPixel());
To actually read raster data the readRasters
method does the job. It returns
an Array
of TypedArrays
for each of the requested samples of the requested
region:
var rasterWindow = [50, 50, 100, 100]; // left, top, right, bottom
var samples = [0, 1, 2, 3];
var rasters = image.readRasters({window: rasterWindow, samples: samples});
for (var i = 0; i < rasters.length; ++i) {
console.log(rasters[i]);
}
// to read all samples with no subsets:
rasters = image.readRasters();
// to read the data in a single interleaved array:
var array = image.readRasters({interleave: true});
To read TIFF or geo-spatial metadata, the methods .getFileDirectory()
and
.getGeoKeys()
provide the data:
console.log(image.getFileDirectory(), image.getGeoKeys());
What to do with the data?
There is a nice HTML 5/WebGL based rendering library called plotty, that allows for some really nice on the fly rendering of the data contained in a GeoTIFF.
<canvas id="plot"></canvas>
<script>
// ...
var tiff = GeoTIFF.parse(data);
var image = tiff.getImage();
var rasters = image.readRasters();
var canvas = document.getElementById("plot");
var plot = new plotty.plot({
canvas: canvas, data: rasters[0],
width: image.getWidth(), height: image.getHeight(),
domain: [0, 256], colorScale: "viridis"
});
plot.render();
</script>
Planned stuff:
- Automated extraction of RGB images when possible:
- CMYK, YCbCr or CieLAB conversion to RGB
- Color lookup tables
- Better support of geospatial parameters:
- Parsing of EPSG identifiers
- WKT representation
- Specifying of window in CRS coordinates
- Support of "overview images" (i.e: images with reduced resolution)
Acknowledgements
This library was inspired by GeotiffParser. It provided a great starting point, but lacked the capabilities to read the raw raster data which is the aim of geotiff.js.


Easy webpage by Riley
Assignment: Make a webpage that shows some easy things to do, such as buttons, tables, javascript you find on the webpage
Just show what you can do
Make it Fancy.
Good day Are you Having a Good Day?☻
Enter your current emotion
The output will go here
.
Hi
Shapes I like,
Star
Square
Triangle
Sphere
Cone
Octagon
Pyramid
Cylinder
Oval
Pentagon


in a nutshell about us
To be the highest value provider of global construction services and technical expertise
Project strives to deliver excellence and value to its clients, while maintaining a leadership position in the industry. Project continues to play a relevant role in the building of corporate headquarters, commercial properties, healthcare centers, universities, infrastructure, transportation facilities, museums, retail spaces, hospitality, and residential buildings. We at the forefront of building the most exciting, highly desirable and notable luxury residential condos, hotels, restaurants, and retail spaces in the country.
successful
projects
our work team
-
Gerald
WinsletChief Executive Officer,
Gerald is responsible for all enterprise risk management matters. He serves as President of our company.
-
Jerry
MasonChief marketing officer
Jerry coordinates strategic growth initiatives, marketing, business development and communication activities.
comprehensive
local offices
OUR CORE VALUES
Integrity
A tradition of ethical and honest business conduct is the cornerstone of our business philosophy, and the foundation of our entire organization.
Quality
We provide outstanding service through teamwork, experience, accountability and innovation – all of which is reflected in the quality of our results.
Innovation
We continually seek new and enterprising ways, whether technology- or process-based, to meet our customers’ needs and exceed their expectations.
Continuous Improvement
We cultivate an environment that supports and encourages ongoing learning, development and personal growth.


1. Introduction
This section is not normative.
CSS Color 4 adds Wide Color Gamut (WCG) color spaces to the Open Web Platform. By design, these are all Standard Dynamic Range (SDR) color spaces. This specification explores what additions might be suitable to also add High Dynamic Range (HDR).
While WCG specifications have been broadly stable for some decades, HDR standards are less mature and have undergone frequent revision in the last decade.
This specification is a collection of ideas and has no status whatsoever. It is not even an Editors Draft and has not been reviewed or adopted by the CSS Working Group.
1.1. Value Definitions
This specification follows the CSS property definition conventions from [CSS2] using the value definition syntax from [CSS-VALUES-3]. Value types not defined in this specification are defined in CSS Values & Units [CSS-VALUES-3]. Combination with other CSS modules may expand the definitions of these value types.
In addition to the property-specific values listed in their definitions, all properties defined in this specification also accept the CSS-wide keywords as their property value. For readability they have not been repeated explicitly.
2. Predefined color spaces for HDR:
In addition to the SDR color spaces defined by CSS Color 4, the following HDR color spaces are defined for use in the color function CSS Color 4 § 10.1 Specifying profiled colors: the color() function.
Serialization of values in these new color spaces is identical to the description in CSS Color 4 § 4.7 Serializing <color> Values.
2.1. rec2100-pq
The rec2100-pq [Rec_BT.2100] color space accepts three numeric parameters, representing the red, green, and blue channels of the color, with each having a valid range of [0, 1] regardless of the actual bit depth (10 or 12 bits per component).
This is to avoid confusion if [0, 1024] and [0, 4096] encoded values are mixed up. Add examples showing conversion from binary values to the [0, 1] range.
should this specification recommend that the CSS Object Model store these values in the 16-bit half-floating point representation (IEEE standard 754-2008.) from BT.2100 pp. 9-10? (or any wider representation, like float or double)?
should the values accept % as well as number? so 19% as well as 0.19. Probably yes.
The Perceptual Quantizer (PQ) electro-optical transfer function is used [SMPTE-ST-2084],[Rec_BT.2100]. PQ assumes a reference viewing condition where the screen surround is at 5 cd/m².
ITU Reference 2100 is used for HDR 4k and 8k television.
In contrast to SDR color spaces and some HDR color spaces, the PQ values are absolute rather than relative.
add a diagram showing SDR and HDR dynamic ranges on a log scale
It has the following characteristics: (The display primaries are the same as [Rec.2020]):
| x | y | |
| Red chromaticity | 0.708 | 0.292 |
|---|---|---|
| Green chromaticity | 0.170 | 0.797 |
| Blue chromaticity | 0.131 | 0.046 |
| White chromaticity | 0.3127 | 0.3290 |
| Transfer function | Perceptual Quantizer | |
| White luminance | 203 cd/m² | |
| Peak white luminance | 10,000 cd/m² | |
| Black luminance | 0.001 cd/m² | |
| Image state | display-referred |
from BT.2100 p.3 "Note 3d – For PQ in a non-reference viewing environment, or for HLG (in any viewing environment), the black level should be adjusted using the PLUGE test signal and procedure specified in Recommendation ITU-R BT.814."
color(rec2100-pq 1.0 1.0 1.0);
color(rec2100-pq 0.58 0.58 0.58);
This color represents a mid grey, like a photographer’s "18% reflectance grey" card, at 17 cd/m².
color(rec2100-pq 0.34 0.34 0.34);
add other examples, including encoding of sRGB red, green, blue and P3 red, green, blue.
Linear-light RGB signals are converted to PQ encoded as follows. An absolute luminance scale is used, so the luminance of diffuse (media) white is required to scale relative luminances. The maximum encodable value (peak, small-area white) in PQ is 10,000 cd/m². Media white is 203 cd/m² [Rpt_BT.2408].
var Er; // the red, green or blue component, [0, 1] for SDR, [0, 70ish] for HDR var Yw= 203 ; // the absolute luminance of diffuse white, cd/m² var x= Er* Yw/ 10000 ; // absolute luminance of peak white is 10,000 cd/m². const n= 2610 / ( 2 ** 14 ); const m= 2523 / ( 2 ** 5 ); const c1= 3424 / ( 2 ** 12 ); const c2= 2413 / ( 2 ** 7 ); const c3= 2392 / ( 2 ** 7 ); xPQ= ((( c1+ ( c2* ( x** n))) / ( 1 + ( c3* ( x** n)))) ** m);
xPQ is the "gamma-corrected" (OETF-adjusted) signal [0, 1].
PQ encoded values are converted to linear-light as follows:
var xPQ; // the red, green or blue PQ-encoded component, [0, 1] const ninv= ( 2 ** 14 ) / 2610 ; const minv= ( 2 ** 5 ) / 2523 ; const c1= 3424 / ( 2 ** 12 ); const c2= 2413 / ( 2 ** 7 ); const c3= 2392 / ( 2 ** 7 ); var x= ((( Math. max((( xPQ** minv) - c1), 0 ) / ( c2- ( c3* ( xPQ** minv)))) ** ninv); var Yw= 203 ; // the absolute luminance of diffuse white, cd/m² var Ea= x* 10000 ; // absolute luminance, [0, 10,000]. var Er= x* 10000 / Yw; // luminance relative to diffuse white, [0, 70 or so].
2.2. rec2100-hlg
The rec2100-hlg [Rec_BT.2100] color space accepts three numeric parameters, representing the red, green, and blue channels of the color, with each having a valid range of [0, 1] regardless of the actual bit depth (10 or 12 bits per component).
The Hybrid Log-Gamma (HLG) electro-optical transfer function is used [ARIB_STD-B67],[Rec_BT.2100]. HLG can be used with displays of different brightness in a wide range of viewing environments, with user control of the overall brightness level. A value of 0.75 represents "diffuse" or "media" white while an "18% reflectance grey" card has a value of 0.38. [Rec_BT.2390].
It has the following characteristics: (The display primaries are the same as [Rec.2020]):
| x | y | |
| Red chromaticity | 0.708 | 0.292 |
|---|---|---|
| Green chromaticity | 0.170 | 0.797 |
| Blue chromaticity | 0.131 | 0.046 |
| White chromaticity | 0.3127 | 0.3290 |
| Transfer function | Hybrid log Gamma | |
| White luminance | ||
| depends on viewing conditions | ||
| Peak white luminance | 12 times reference white | |
| Black luminance | depends on reference white, see text | |
| Image state | scene-referred |
color(rec2100-hlg 0.75 0.75 0.75);
This color represents a mid grey, at 26 to 104 cd/m².
color(rec2100-hlg 0.38 0.38 0.38);
Linear-light RGB signals are converted to HLG encoded as follows [Rec_BT.2390]:
var E; // the red, green or blue component, [0, 1] const a= 0.17883277 ; const b= 0.28466892 ; // 1 - (4 * a) const c= 0.55991073 ; // 0.5 - a * Math.log(4 *a) if ( E<= 1 / 12 ) { Edash= Math. sqrt( 3 * E); } else { Edash= a* Math. log( 12 * E- b) + c; }
Edash is the "gamma-corrected" (OETF-adjusted) signal.
The reverse conversion (HLG encoded to linear light) is as follows [Rec_BT.2390]::
var Edash; // the red, green or blue encoded component, [0, 1] const a= 0.17883277 ; const b= 0.28466892 ; // 1 - (4 * a) const c= 0.55991073 ; // 0.5 - a * Math.log(4 *a) if ( Edash<= 0.5 ) { E= ( Edash** 2 ) / 3 ; } else { E= Math. exp((( Edash- c) / a) + b) / 12 ; }
add black level lift Β as defined on same page?
2.3. Jzazbz
The Jzazbz color space [Safdar-PUCS] accepts three numeric parameters, with Jz representing the Lightness (similar to L in Lab) while az and bz represent the redness-greenness and yellowness-blueness opponent-color axes (similar to a and b in Lab).
Lab uses a lightness scale with a [0%, 100%] range, relative to media white, and has been experimentally extended to L=400%. In contrast, the Jz axis in Jzazbz uses Perceptual Quantizer encoding, and can represent a dynamic range of more than 13 stops.
It has the following characteristics:
| x | y | |
| White chromaticity | 0.3127 | 0.3290 |
|---|---|---|
| Transfer function | Perceptual Quantizer | |
| Peak white luminance | 10,000 cd/m² | |
| Black luminance | 0.001 cd/m² | |
| Image state | display-referred |
Note that unlike Lab, a D65 whitepoint is used. Thus, for most RGB spaces (which also use a D65 whitepoint) no chromatic adaptation step need be performed.
2.4. JzCzHz
Similar to LCH, which is the polar representation of Lab, JzCzHz is the polar form of Jzazbz. Jz is identical to the value in JzCzHz and represents the Lightness, while Cz represents the Chroma or colorfulness and Hz represents a hue angle, measured from the positive az axis, towards the positive bz axis.
color(jzazbz 0.17542 -0.1179 0.1092);
and here is the same color in the polar form
color(jzczhz 0.17542 0.1614 132.50);
2.4.1. Converting Jzazbz colors to JzCzHz colors
Conversion to JzCzHz is trivial:
- Hz = atan2(bz, az) // but convert to degrees!
- Cz = sqrt(az^2 + bz^2)
- Jz is the same
2.4.2. Converting JzCzHz colors to Jzazbz colors
Conversion to Jzazbz is trivial:
- az = Cz cos(H) // convert to radians first!
- bz = Cz sin(H) // convert to radians first!
- Jz is the same
2.5. ICtCp
The ICtCp color space is defined as Constant Intensity ICTCP signal format in [Rec_BT.2100] and accepts three numeric parameters, with I representing the Intensity (similar to L in Lab, but covering a luminance range up to 10,000 cd/m2) while CT and CP represent the yellowness-blueness (tritanope) and redness-greenness (protanope) opponent-color axes (similar to b and a, respectively, in Lab).
It is based on human visual system LMS cone primaries; the Hunt-Pointer-Estevez (HPE) XYZ to LMS transform is used, normalized to a D65 white point. A crosstalk matrix is then applied, to reduce the gamut hull concavities of BT.2020 RGB, thus reducing interpolation errors. The crosstalk also provides improved lines of constant hue and improved uniformity of Just Noticeable Difference (JND) MacAdam ellipses.
It has the following characteristics:
| x | y | |
| White chromaticity | 0.3127 | 0.3290 |
|---|---|---|
| Transfer function | Perceptual Quantizer | |
| White luminance | 203 cd/m² | |
| Peak white luminance | 10,000 cd/m² | |
| Black luminance | 0.001 cd/m² | |
| Image state | display-referred |
Although [Rec_BT.2100] defines ICTCP by a conversion from linear-light BT.2100 RGB [Rec_BT.2100], this conversion proceeds via LMS and thus, any other color space can also be represented by applying an XYZ to LMS transform.
Note that unlike Lab, a D65 whitepoint is used.
Also unlike Lab, which has primarily been tested with lower-intensity reflective colors, ICTCP has been tested with high-chroma, self-luminous, and high intensity (HDR) colors. This makes it suitable for color difference measurement (deltaE ITP) and for gamut mapping of SDR and HDR colors.
3. Compositing SDR and HDR content
Compositing should take place in CIE XYZ, as it is a linear-light space without gamut limitations. Implementations may chose to composite in a linear-light RGB space instead, which will give the same result provided out-of-gamut values (negative, or greater than 100%) are correctly handled and not clipped or gamut mapped until the final transfer to the device color space.
Relative HDR, using the HLG transfer function, must map SDR media white to the same luminance as is used to display the 75% HLG value. [SMPTE-ST-2084]
For further details, see also tables 3 and 4 in ITU Rpt_BT.2408-0 [Rpt_BT.2408]
Absolute HDR, using the PQ transfer function, should map SDR media white to 203 cd/m², the same luminance as is used to display the 58% PQ value. [SMPTE-ST-2084] However, implementations may chose to incorporate a color re-rendering step (OOTF) to account for non-reference viewing conditions.
Do the PQ-based color spaces require tone-mapping (OOTF) for display in different viewing environments?
Privacy and Security Considerations
Make some considerations about privacy and security.
Accessibility Considerations
Some individuals may have a sensitivity to very bright colors, so user agents should provide a mechanism to limit the maximum luminance at user option. The toe and knee procedure in section 5.4.1 Mapping to display with limited brightness range of [Rec_BT.2390] is suggested as suitable.


Module Manager - Dynamically Loading Assemblies at Runtime
A Clifton Method Core Component - Part I
Complete source code, including the demo here
Building applications with runtime loaded assemblies is a useful capability, as it provides the ability to:
By "logical components", I mean an assembly (DLL) that is encapsulates all the functionality of "something" into a group. An easy way to first understand this concept is by thinking about physical devices, for example, a camera. All the functionality that a camera might provide, such as taking a picture, streaming video, configuring its resolution, and other settings, can be organized into a logical component. Because different cameras will most likely have different API's and options, one can create different DLL's for each physical device and customize the application for the actual camera (or cameras) that are part of a particular installation.
Creating services as logical components is another useful thing to do. For example, a web server can be a component, encapsulating handling HTTP requests. The router might be a different component. If you're implementing a server that provides public services, you probably don't need a router that performs authentication. If you're implementing a server that serves non-public pages or REST calls, you would want a router component that performs authentication. Another good example is interfacing to different databases, such as SQL Server, Oracle, or a NoSQL database.
When is a set of classes suitable for wrapping in a module as a component, and when are they not? Ideally, you should already be asking yourself this question when writing a non-modular application because even the internals of such an application should be organized in such a way that the code is structured "logically."
Ask these questions:
In the last question, what do we mean by "high level behaviors?"
High level behavior typically:
Low level behaviors typically fall into the "utility" category, classes that implement:
You essentially have all "yes" answers for "Does it behave like a component?" and "Is it high level?", and all "no" answers for "Is it low level?"
The typical approach to building "components" is to use inheritance and a factory pattern.
Here, the code, in a monolithic manner, implements the each of the concrete server implementations and asks the factory method to create the desired concrete object.
In this scenario, the application gets an instance of whatever is specified in a separate configuration file as to the implementing concrete type. The concrete types are implemented as separate assemblies.
What do you notice about this?
That last point is worth repeating: Inheritance is replaced with modularity. Instead of creating a potentially complex inheritance tree of specializations, each specialization lives autonomously in its own module, and the inheritance is usually very shallow, in fact usually just implementing the interface requirements.
In order to utilize a modular architecture, the interface classes must be shared, either by referencing the same files, typically in some common folder, or wrapping the shared files in an assembly shared both by your application and the module. The salient point is that the files, or assembly of the files, must be shared. Why? Because:
A monolithic application doesn't have this issue because everything is in the same application solution:
Once you start writing your code so that you have different projects (assemblies) for your components, you must share the interface source code or abstract class code in a shared assembly:
This is also true when you start writing components as runtime loaded modules:
Here again we see an inversion of more monolithic application development. Rather than:
or:
we instead have:
Certainly, the project files for the different modules may live together in the same solution (and even in multiple solutions, as these modules are often shared), but the salient point is, neither the application, nor the modules, directly reference other modules.
After that lengthy introduction, we can look at the implementation details.
One thing to note is that in this code, I was dabbling, somewhat inconsistently,
with semantic types, as I wrote about in
Strong Type Checking with Semantic Typess. So you'll see a couple types
like XmlFileName
and AssemblyFileName
that are type
wrappers for strings. I'm not sure whether there's benefit to this or not
-- it's probably unnecessary complexity here, though I do like the idea of
specifying what type of string is expected in the parameter, based on type
rather than variable name.
I also rely on some Linq extension methods and assertion methods that are in the repo, but are not discussed here.
I specify modules in an XML file. You could just as easily put this in the application config file, a database table, a JSON document, or something else. The XML format that I use looks like this:
<?xml version="1.0" encoding="utf-8" ?> <Modules> <Module AssemblyName='[some module name].dll'/> <Module AssemblyName='[another module name].dll'/> </Modules>
I load the XML file into the List<AssemblyFileName> that the module registration requires (see below) with two helper methods in your application:
/// <summary> /// Return the list of assembly names specified in the XML file so that /// we know what assemblies are considered modules as part of the application. /// </summary> static private List<AssemblyFileName> GetModuleList(XmlFileName filename) { Assert.That(File.Exists(filename.Value), "Module definition file " + filename.Value + " does not exist."); XDocument xdoc = XDocument.Load(filename.Value); return GetModuleList(xdoc); } /// <summary> /// Returns the list of modules specified in the XML document so we know what /// modules to instantiate. /// </summary> static private List<AssemblyFileName> GetModuleList(XDocument xdoc) { List<AssemblyFileName> assemblies = new List<AssemblyFileName>(); (from module in xdoc.Element("Modules").Elements("Module") select module.Attribute("AssemblyName").Value).ForEach(s => assemblies.Add(AssemblyFileName.Create(s))); return assemblies; }
Using the above code (for an XML file), I register modules with:
IModuleManager moduleMgr = serviceManager.Get<IModuleManager>(); List<AssemblyFileName> modules = GetModuleList(XmlFileName.Create("modules.xml")); moduleMgr.RegisterModules(modules);
Module registration is performed here:
/// <summary> /// Register modules specified in a list of assembly filenames. /// </summary> public virtual void RegisterModules( List<AssemblyFileName> moduleFilenames, OptionalPath optionalPath = null, Func<string, Assembly> assemblyResolver = null) { List<Assembly> modules = LoadModules(moduleFilenames, optionalPath, assemblyResolver); List<IModule> registrants = InstantiateRegistrants(modules); InitializeRegistrants(registrants); }
The idea here is to allow the application to specify a sub-folder in which modules (dll's) are located. This helps to create a cleaner separation of module assemblies from other, "statically linked" dependencies.
This is an interesting optional parameter. It is a function that takes
the module name and returns the Assembly
. The idea here is
that the assembly may be located in a strange place, such as a resource file of
the application. I haven't written about this technique, but when I do,
I'll come back here and provide a link to that concept. In general though,
you can use this optional function to attempt to resolve an assembly located
somewhere other than a sub-folder of the application.
The method LoadModules iterates through the list of modules:
/// <summary> /// Load the assemblies and return the list of loaded assemblies. In order to register /// services that the module implements, we have to load the assembly. /// </summary> protected virtual List<Assembly> LoadModules(List<AssemblyFileName> moduleFilenames, OptionalPath optionalPath, Func<string, Assembly> assemblyResolver) { List<Assembly> modules = new List<Assembly>(); moduleFilenames.ForEach(a => { Assembly assembly = LoadAssembly(a, optionalPath, assemblyResolver); modules.Add(assembly); }); return modules; }
This returns a list of Assembly
instances.
LoadAssembly attempts to actually load the assembly, optionally passing the "I need this assembly" over to the assembly resolver function that you provided in the registration call.
/// <summary> /// Load and return an assembly given the assembly filename so we can proceed with /// instantiating the module and so the module can register its services. /// </summary> protected virtual Assembly LoadAssembly( AssemblyFileName assyName, OptionalPath optionalPath, Func<string, Assembly> assemblyResolver) { FullPath fullPath = GetFullPath(assyName, optionalPath); Assembly assembly = null; if (!File.Exists(fullPath.Value)) { Assert.Not(assemblyResolver == null, "AssemblyResolver must be defined when attempting to load modules from the application's resources."); assembly = assemblyResolver(assyName.Value); } else { try { assembly = Assembly.LoadFile(fullPath.Value); } catch (Exception ex) { throw new ModuleManagerException("Unable to load module " + assyName.Value + ": " + ex.Message); } } return assembly; }
The optional path is appended to the executing assembly location in the GetFullPath method:
/// <summary> /// Return the full path of the executing application (here we assume that ModuleManager.dll is in that path) and concatenate the assembly name of the module. /// .NET requires the the full path in order to load the associated assembly. /// </summary> protected virtual FullPath GetFullPath(AssemblyFileName assemblyName, OptionalPath optionalPath) { string appLocation; string assyLocation = Assembly.GetExecutingAssembly().Location; if (assyLocation == "") { Assert.Not(optionalFolder == null, "Assemblies embedded as resources require that the optionalPath parameter specify the path to resolve assemblies."); appLocation = optionalPath.Value; // Must be specified! Here the optional path is the full path. This gives two different meanings to how optional path is used! } else { appLocation = Path.GetDirectoryName(assyLocation); appLocation = Path.GetDirectoryName(assyLocation); if (optionalPath != null) { appLocation = Path.Combine(appLocation, optionalPath.Value); } } string fullPath = Path.Combine(appLocation, assemblyName.Value); return FullPath.Create(fullPath); }
Unfortunately, in the above code, there is a dual use of the optional path. There is a nuance of loading assemblies when the Module Manager is itself an embedded resources assembly -- the executing path in this case is an empty string, because the assembly, loaded by .NET assembly through a separately implemented assembly resolver (not discussed here), isn't associated with the executing assembly! This is very odd behavior and this whole situation should be ignored until I write the article on embedding assemblies as resources. In this case, the optional path is the full path to resolves the assembly location. Quite honestly, this whole issue requires a refactoring of how assemblies embedded as resources should be handled.
Once the assemblies have been loaded, the Module Manager instantiates the
registrants. A "registrant" is a special class (one and only one such
class) in each module that has implements the method in the interface IModule
.
In other words, our modules "know" that they are modules and can do some special
things because they are modules. What those special things are is
essentially up to you. In my library, the module is initialized with a
Service Manager so that the module can register the services that it provides.
That is described in the next article in this series. For now, we just
need to know that the each module must provide a class that implements IModule
.
/// <summary> /// Instantiate and return the list of registratants -- assemblies with classes that implement IModule. /// The registrants is one and only one class in the module that implements IModule, which we can then /// use to call the Initialize method so the module can register its services. /// </summary> protected virtual List<IModule> InstantiateRegistrants(List<Assembly> modules) { registrants = new List<IModule>(); modules.ForEach(m => { IModule registrant = InstantiateRegistrant(m); registrants.Add(registrant); }); return registrants; } /// <summary> /// Instantiate a registrant. A registrant must have one and only one class that implements IModule. /// The registrant is one and only one class in the module that implements IModule, which we can then /// use to call the Initialize method so the module can register its services. /// </summary> protected virtual IModule InstantiateRegistrant(Assembly module) { var classesImplementingInterface = module.GetTypes(). Where(t => t.IsClass). Where(c => c.GetInterfaces().Where(i => i.Name == "IModule").Count() > 0); Assert.That(classesImplementingInterface.Count() <= 1, "Module can only have one class that implements IModule"); Assert.That(classesImplementingInterface.Count() != 0, "Module does not have any classes that implement IModule"); Type implementor = classesImplementingInterface.Single(); IModule instance = Activator.CreateInstance(implementor) as IModule; return instance; }
Each registrant in the module, once instantiated, can be initialized. The initialization method is a virtual stub in the ModuleManager class:
/// <summary> /// Initialize each registrant. This method should be overridden by your application needs. /// </summary> protected virtual void InitializeRegistrants(List<IModule> registrants) { }
If your modules need initialization, you would derive from ModuleManager and implement the specific initialization you require.
Our demo solution consists of these four projects:
The example program implements two "speakers", one that emits a console message, the other that speaks the message with .NET's speech synthesizer. The application is quite simple:
static void Main(string[] args) { IModuleManager mgr = new ModuleManager(); List<AssemblyFileName> moduleNames = GetModuleList(XmlFileName.Create("modules.xml")); mgr.RegisterModules(moduleNames, OptionalPath.Create("dll")); // The one and only module that is being loaded. IModule module = mgr.Modules[0]; module.Say("Hello World."); }
Note how the application is loading the modules from the "dll" sub-folder:
The "dll" folder contains the assemblies for the two modules:
Also note that a post-build step copies the module into the "dll" folder:
copy ModuleConsoleSpeak.dll ..\..\..\ModuleManager\bin\Debug\dll
copy ModuleVoiceSpeak.dll ..\..\..\ModuleManager\bin\Debug\dll
Now, by changing the modules.xml file, the application responds by emitting the text to the console window or by speaking it. To speak the text, use this:
<?xml version="1.0" encoding="utf-8" ?> <Modules> <Module AssemblyName='ModuleVoiceSpeak.dll'/> </Modules>
To emit the text on the console window, use this:
<?xml version="1.0" encoding="utf-8" ?> <Modules> <Module AssemblyName='ModuleConsoleSpeak.dll'/> </Modules>
Note that in the demo application (called "ModuleManager", a bad name!), there is no reference to the modules we're loading:
This implementation is for demonstration purposes only!
namespace Clifton.Core.ModuleManagement { public interface IModule { void Say(string text); } }
Here we see the problem I talked about earlier with runtime modular applications -- the common interface must exist in a separate assembly! If you're not careful, this can and will cause and explosion of assemblies that simply define interfaces and other shared types. We'll talk about this further in other articles.
The actual implementation of IModule is tied in with the Service Manager (the next article):
namespace Clifton.Core.ModuleManagement { public interface IModule { void InitializeServices(IServiceManager serviceManager); } }
using System; using Clifton.Core.ModuleManagement; namespace ModuleConsoleSpeak { public class Speak : IModule { public void Say(string text) { Console.WriteLine(text); } } }
using System.Speech.Synthesis; using Clifton.Core.ModuleManagement; namespace ModuleVoiceSpeak { public class Speak : IModule { public void Say(string text) { SpeechSynthesizer synth = new SpeechSynthesizer(); synth.SetOutputToDefaultAudioDevice(); synth.Speak(text); } } }
IModule
InterfaceThis a demonstration only! Placing module-specific requirements into
IModule
is not recommended. Modules are intended to implement a
wide variety of things, and you can't and shouldn't describe those
implementations in the IModule
interface. I am doing so here
only because it's simple to demonstrate just the Module Manager, knowing that
the two modules I've implemented are very limited and have common behavior.
In any real application, I would never do this, which is why the next article is
about the Service Manager.
The demo illustrates the purpose of the Module Manager -- to be able to change the application's behavior:
That's all I intended to do with this article, as the Module Manager is the core component of The Clifton Method.
Another way to go about this while issue is with dependency injection -- using reflection and type information, instantiate an object that implements a particular interface and assign it the a property of that interface type. Personally, I find DI to be overly complicated (you might say the same of what I'm doing here!) and the DI frameworks that I've seen are bloated, slow, and it becomes difficult to debug the application.
Besides, I use the Module Manager in a specific way -- to load assemblies that implement services. The registration process is simple to understand, simple to walk through with a debugger, and the entire implementation is very few lines of code, which makes it easier to maintain.
At the time of this writing, the Module Manager loads all modules immediately -- there is no concept of deferred loading. This might be useful to implement in the future -- an "on demand" loading of modules, but there are certain complexities, in that the Service Manager (which is the next article) would need to know what module to load for a particular implementation. I've not really encountered a requirement for this kind of behavior, so there's really no reason to implement it, yet.
Similarly, the idea of being able to unload a module at runtime is attractive in that you could potentially replace a module without bringing down the application. However, as I've written about regarding Application Domains, the performance and potential problems with event wire-ups makes this feature somewhat undesirable.


This command provides a way for station data profiles and time series to be saved in memory as a set. The command format is:
collect cnum expr
where cnum
is the collection number, a value from
0 to 31, and expr
is any GrADS expression that
gives a station data result. If "free"
is given for
expr
, the collection is emptied and all storage is
freed.
collect
command will only work when one dimension is
varying, either Z or T. Each time collect
is issued for a
particular collection number, the station data is added to the
collection of stations. The order in which stations are added is
important.


{% comment %}
get_project.html (event):
Obtain project object for the event.
Get the event's foreign key project and use its first object in the array
as project object.
Parameters:
event: jekyll post object
Post object containing yml variable project.
Returns:
project: project object
Object from collection projects.
{% endcomment %}
{% assign project_id = include.event.project %}
{% assign project = site.projects | where:"obj_id", project_id | first %}


Notice: You have traveled back through time to the year 2001...be careful interacting with the past can be dangerous!
Once you're done living in the past,
click here to take a look at what this place looks like now.
Dec 7, 2001- The Upperroom (Statesville) /w No Cash Value


--- title: Benefits and Uses layout: default ---
Many people believe that A.I can be harmful to their business, however this is a false notion. A survey done by Sage Group has revealed that small companies spend around 120 days a year doing administrative tasks (Sharma). Artificial Intelligence could save a large majority of that time by performing those tasks for you. As a result, these small companies could spend more time focusing on their customers and improving their business. This is also more cost-effective as well. Now companies do not have to pay for employees as the A.I. can do tasks faster and more efficiently.


The beginning of this company started with simple idea to deal with a vexation that almost every gamer has faced.
This simple yet powerful idea led this company to what it is today. In this section of the website,I will guide you
through how this company was built.
Before I started this company, I was a professional gamer.  Being a gamer, I had to travel different places to attend workshops and tournaments.
During my stay at those places, I had very little time to practice as most of my time was consumed to download and set up
the games on the system. With this grievance in my mind, I went on to launch this product.
The product is a high speed mini drive,like a pendrive, that has a game preinstalled in it by the developer. Gamer Pizza's
security protocols ensure pirating of games is at a minimum.
 We go a step further to make it cross platform
compatible. All of your settings including the OS specific settings can be replicated on any system using our product.
Now, all thats left to do is to plug that drive into any PC.GAME ON!


| DOSE: |
6 tablets |
oral |
DXM |
(pill / tablet) |
About a year and a half ago I started taking Coricidin Cold and Cough .  The first time I ever did it I took four. I fell asleep from it and when I woke up I was high as a kite. It scared me, but then again I also liked it. So I did it about three or four times after that. Nothing bad ever happened.
Last year we threw a party over at one of my good friends house. The second night of the party we couldn't find anything good to take so we decided to go buy some boxes of Coricidin. We bought about 5 to 6 boxes. I took 6 this time, which I had never done before, and other people took 16 apiece.
That night is such a blur to me, so I can only tell what I remember and some that was told to me. A lot of people at the party started getting sick including me. I remember hearing the toilet flushing like every 5 minutes. I was laying in a bed across from the bathroom praying whoever was in it would get out so I could go. Finally the bathroom was empty and I ran for it. I started to vomit. One of my friends came in there to help me because I couldn't stop being sick. That is when I started to tell all my friends that I was dying. I felt very hot then I felt very cold. My body felt as if it was being charged up like I was being shocked. I really can't remember all that happened that night. I just remember telling people that I was going to die.
The next morning I woke up high as a kite. My whole body ached and I felt very nauseted. All I wanted to do was to go home and go to bed. I knew the Coricidin would make me very dehydrated, that was normal, but I was so dehydrated I could barely talk. I didn't find out until the next day exactly how much I was sick. My friend who helped me told my I threw up 3 to 4 times in the night and I only remember one time. She said she was very scared for me and everyone else at the party because there was like 8 people who also got sick from it.
Never again have I taken Coricidin. For one thing it is for people with high blood pressure.  I suggest people not to use Coricidin because you might not be as fortunate as I was, you could die.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.