The department is recognized as a Research Center for M.S. / Ph.D. by the ANNA UNIVERSITY.
AFFILIATIONThe Department has PERMANENT AFFILIATION from ANNA UNIVERSITY.
AICTE-CII SURVEYThe department is Ranked 3rd in the AICTE-CII Survey conducted Nationwide for Industry Institute Interaction.
IIT BOMBAY REMOTE CENTERThe department acts as Remote Center for conducting Spoken Tutorials, workshops and certifications by IIT, BOMBAY in collaboration with ISTE and funded by MHRD
IBM CENTRE FOR EXCELLENCEThe department is credited with IBM Software Centre for Excellence and the lab is set for the same. We are also attributed to conduct International certifications by IBM trained faculty members.


Indian Broadcaster Releases Video of MiG-29K on Fire While Falling From Sky
Although an investigation into the incident is ongoing, preliminary reports indicate that the fighter jet experienced a bird strike mid-air. Both pilots survived by successfully ejecting.
by by Tim KorsoLocal broadcaster GOA 365 has published footage showing an Indian MiG-29K falling from the sky with one of its engines on fire. The jet crashed near a church in the village of Verna, Goa state. The jet's right engine malfunctioned soon after it took off from the INS HANSA naval air station at Dabolim for a training mission.
While the exact cause of the incident is still unclear, the preliminary version is that the jet suffered a bird strike, despite the plane having a certain degree of protection against alien objects entering the engine inlets.
The MiG Corporation, which produced the jet, has expressed readiness to help with the investigation of the incident, adding that it doesn't have any specific information on the matter except that both pilots successfully ejected and survived.


--- layout: post title: "Dinosaurs are extinct today" subtitle: "because they lacked opposable thumbs and the brainpower to build a space program."  Currently a second year student at Mzumbe University pursuing Bachelor of science in Economics- Project Planning and Management. I love learning new things every now and then when i get chance to. I am passionate about creating impact to the people in different group to the society. I love reading and writing. I write articles about different matters
In 2019, I found a youth organization called INSPIRING GENERATION which deals with connecting youths from different areas particularly universities students and provide them platform to share challenges and experiences in different fields.
Since am passionate on reading and writing, I also created a Reading and writing platform called LETS READ which works in social medias accounts but also in PODCASTS, where readers and writers get the chance to share their experiences in reading and writing. On may 2020, I created a blog called GENNIE PLUS (gennieplus.blogspot.com) where I share different inspiring stories from different people, articles and tips on different matters.
I've been working with different organization and corporates. Currently working as Assistant Editor at Inspire Magazine Globally. But also as business creativity manager at The Event Corps. Also as a chairman of KIJIWENI PROJECT under Resource and Incubation Center at Mzumbe University.
Participating in different activities makes me gaining more experiences in different fields but also be the icon to other youths especially girls. I once chosen as a Friday icon at Mzumbe University under Mzumbe Media. Actually am doing many things outside the class, but having a time for each one makes me not to loose in any of them. I have time for each one and nothing can interfere the other's time. Am youth passionate and being that way, makes me want to introduce different platforms where youths will get a chance to brand themselves and show what they can do. Actually, that makes me introducing different platforms.
Age does not matter. People used to be amazed when they do connect my age and the activities am doing. But what i can say is being ready and committed to my passions made me to start achieveing even a little, to my goals. Showing off my abilities once given a stage to show it. This makes people to see something potential in me and allow me to contribute my ideas and even work with them. Age is just a number to any ambitious youth and girl.
To all youths, Explore yoursef to know your abilities, utilize them, use them to improve yourself and improving the society as well in all aspects of life. To know yourself is the first attempt to success. We are all unlimited.
Space, the final frontier. These are the voyages of the Starship Enterprise. Its five-year mission: to explore strange new worlds, to seek out new life and new civilizations, to boldly go where no man has gone before.
Placeholder text by Space Ipsum. Photographs by Unsplash.


|
Note This is a note Summary Lorem ipsum Abstract Lorem ipsum Tldr Lorem ipsum Info Lorem ipsum Todo Lorem ipsum Tip Lorem ipsum Hint Lorem ipsum Success Lorem ipsum Check Lorem ipsum Done Lorem ipsum Question Lorem ipsum Help Lorem ipsum Faq Lorem ipsum |
Warning Lorem ipsum Attention Lorem ipsum Caution Lorem ipsum Failure Lorem ipsum Fail Lorem ipsum Missing Lorem ipsum Danger Here will be dragons Error Lorem ipsum Bug Lorem ipsum Example Lorem ipsum Snippet Lorem ipsum Quote Lorem ipsum Cite Lorem ipsum Unknown Lorem ipsum |
!!! note
This is a note
Note
This is a note
!!! note With custom title
This is a note
With custom title
This is a note
!!! note ""
This note has no title
This note has no title
Note in blockquote
in blockquote
Lorem ipsum
end of quote...
Admonitions in list
Note in list
Lorem ipsum
I am done
Warning
...


Man Bites Dog
by David MannersHere’s a yarn of the man bites dog variety: China is giving an American takeover deal a regulatory going over.
CFIUS, the Committee for Foreign Investment in the US, has turned down many an attempt by Chinese companies to buy US companies.
Now the boot is on the other foot.
Diodes Inc of Texas, which bought Zetex, Ferranti Semiconductors’ discretes business in 2008- and, earlier this year – bought the old Natsemi/TI fab at Greenock, made a $428 million offer, in August, to buy Lite-On Semiconductor of Taiwan.
Lite-On has a Shanghai affiliate company called On-Bright Electronics with a market value of $324 million.
Diodes’ take-over of Lite-On would mean control of On-Bright would pass to Diodes.
Lite-On is a power discretes company and On-Bright is an analogue and mixed signal IC company with CMOS, BiCMOS and BCD processes.
It is now being rumoured that the Chinese regulator will only allow the takeover to go ahead if OnBright is cut out of the deal.
The newly aggressive regulatory stance by China has come as a surprise to many.
We keep being told that a US-China trade peace deal is around the corner but this looks like escalated tit-for-tat.


|
SUBJECT INDEX Anthropology Architecture Art Black Studies Business Ecology Economics Education Film Healthcare History Law Linguistics Literature Mass Media Medicine Music Philosophy Political Science Psychology Religion Science Shakespeare Sociology Sports Recreation Urban Studies Women's Studies |
History: Middle Ages / MedievalTo order a specific paper, click the Catalog Number button next to the Paper Title of interest. Send comments to<EMAIL_ADDRESS>Last Updated: 12/21/96 Copyright ©1996 ASM Communications, Inc. All Rights Reserved. |


You need to enable JavaScript to run this app.
Source Code:
https://github.com/nbsp1221/react-minesweeper-game


I made my final project with Mirriam.
For my final project we created a box, we used fusion 360 to design our square shaped box before 3d printing it, next we used correll draw to design a star pattern which we laser cutted into the wood on the raster setting so it did not go through the wood, we put wood on the top and bottom . After that we stained the wood a natural color and then we attatched them with nails and screws. This took about 2 and a half class periods. I learned how to use the 3D printer and laser cutter better throughout this process.


coredata-<IP_ADDRESS>799/ <-- User selected installation directory (where xxx is a build number) doc/ <-- API documentation pycoredata/ <-- CoreData Python API examples/ <-- Example applications lib/ <-- Precompiled python bindings src/ <-- Source code swigcoredata/ <-- Swig interface files
Add the coredata/libshared/win32_ia32sse2_vc90 directory to the PATH environment variable.
Client code needs to import the appropriate modules:
import sm.eod # Import CoreData types import sm.eod.io # Import IO classes import sm.eod.utils # Import geometric and output helper functions
We recommend you try to limit changes to the CoreData source and document these changes, so that when future CoreData releases are made you can update your code quickly and easily.
For compilation instructions, please refer to the appropriate instructions for your platform:


Home
Brock D. Weekley
Experience:
- SS&C Cloud Platform Technical Developer
I began a summer internship at SS&C Technologies in 2019 where my responsibilities included developing Angular applications, writing Java springboot endpoints, manipulating JPA Datatypes, and configuring security for multiple applications. Following this internship, I was offered a part time position where I continued to work building our Alerting application from remote while attending school at the Univeristy of Missouri. I am still in employment here.
- Microsoft Certified C# Developer
In 2015, my focus language was C# and game development through Visual Studio. I attended the Fort Osage Career and Technology Center, where I took a course devoted to teaching C# fundamentals and Microsoft techniques. Following this course, we were given a certification test which I passed and have maintained my knowledge of in order to consider myself a certified Microsoft C# Developer.
- National Technical Honor Society
As part of the Career and Technology Center course that I took, by receiving an A in the course and having a high GPA, I was invited to join the National Technical Honor Society. This is an honor society recognizing achievement in STEM fields and technical skills. I have maintained my membership with this organization and become part of the NTHS network of career professionals.
- Honors College at Mizzou
Upon choosing to attend the University of Missouri, I was accepted into the Honors College of Mizzou, where I have since taken many classes with honors both in my field and not in order to develop my other attributes. For example, in taking an honors french course, I was able to learn French at a conversational level and helped the department with many different activities including a website for quizzing students.
Skills:
Web Development with:
- The Ionic framework, which this application is developed in.
- Angular and Node
- PHP and Apache
- Javascript and jQuery
- Google API's and Google's FireBase
- Python Scrapy
- Full stack applications with Express, NodeJS, and MongoDB
Application Development with:
- C, mainly algorithm complexity and design (Big O)
- C++, Raspberry Pi development
- C#, game design and fundamentals
- Java, main language, furthering object oriented concepts and developing backend for web apps
- Python, robotics development (NAO Robots)
- Database relation languages such as mySQL
Education:
Grain Valley High School
Grain Valley, MO, 64029
Cumulative GPA: 4.012
Graduation: May 2017
University of Missouri- Columbia
Columbia, MO, 65201
Current GPA: 3.54
Expected Graduation: May 2021


WITNESS LIST International Relations and Trade Committee March 4, 2004 - 9:00A Interim Charges ON: Agan, Jerry County Judge (Presidio County), Marfa, TX Aguirre, Martin CEO (Upper Rio Grande Workforce Development Board), El Paso, TX Aguirre, Pedro Board Member (DFW International Airport), Dallas, TX Andrade, Hope Commissioner (Texas Transportation Commission), Austin, TX Andrade, Robert Trade and Location Advisor-The Americas (Office of the Governor-Economic Development and Tourism Division), Austin, TX Arbuckle, David General Manager, External Affairs (SBC), El Paso, TX Breitinger, Michael Executive Director (El Paso Central Business Association), El Paso, TX Briones, Dolores County Judge (El Paso County), El Paso, TX Cabello Jr., Homero Director, Office of Colonia Initiatives (Texas Department of Housing and Community Affairs), Austin, TX Camp, Jena Bilingual Workforce Dev. Coordinator (El Puente CDC and La Mujer Obrera), El Paso, TX Clouse, Archie Regional Director (Texas Commission on Environmental Quality - Executive Director), Austin, TX Duran, Arturo (U. S. International Boundary and Water Commission), El Paso, TX Flores, Betti County Commissioner (El Paso County), El Paso, TX Garces, Jorge C. Deputy Managing Director (North American Development Bank), San Antonio, TX Garcia, Richard Mayor/Chair of TBIC (Texas Border Infrastructure Coalition), Edinburg, TX Garza, David A. Cameron County Commissioner (Cameron County), San Benito, TX Garza, Wanda Exec. Dir. for Workforce Dev.--STCC (Texas Border Infrastructure Coalition), McAllen, TX Gilyard, Roy Executive Director (El Paso MPO), El Paso, TX Gonzalez, Edna Administrative Assistant (Community Scholars, Inc.), El Paso, TX Green, Jerome Program Coordinator (Community Scholars, Inc.), El Paso, TX Helbing, Steve President (Wells Fargo Bank), El Paso, TX Holguin, Hector CEO (Holguin Group), El Paso, TX Houghton, Ted Commissioner (Texas Transportation Commission), Austin, TX Lopez, Richard L. Program Specialist (HUD Office - Southwest Border Region), San Antonio, TX Macias, David Customs Broker (El Paso Customs Brokers Association), El Paso, TX Macias, Fernando General Manager (Border Environment Cooperation Commission), El Paso, TX Madera, Jr., Ignacio Deputy Executive Administrator (Texas Water Development Board), Austin, TX Manley, Jim (El Paso County Judge Dolores Briones), El Paso, TX Michie, Donald Ph.D. (Border Trade Alliance/Foreign Trade Association), El Paso, TX Payan, Sal (Congressman Reyes), El Paso, TX Picard-Ami, Maria (El Puente CDC and La Mujer Obrera), El Paso, TX Pickett, Joe State Representative (Self), El Paso, TX Rath, Diane Chair (Texas Workforce Commission), Austin, TX Reck, Michael Program Specialist-Enforcement Division (Texas Comptroller of Public Accounts), Austin, TX Redwine, Augustin Senior Research Analyst (Texas Comptroller of Public Accounts), Austin, TX Rivera, Carlos (U. S. Environmental Protection Agency-El Paso Border Office), El Paso, TX Rodriguez, Raul Managing Director/CEO (North American Development Bank), San Antonio, TX Rojas, Vivian City Council Representative (City of El Paso, District 7), El Paso, TX Saenz, Amadeo Assistant Executive Director (Texas Department of Transportation), Austin, TX Saenz, Luis Assistant Secretary of State (Office of the Secretary of State), Austin, TX Salas, Maria Coordinator (El Puente CDC and La Mujer Obrera), El Paso, TX Sanchez, Yvette Director of Colonia Initiatives (Office of the Secretary of State), Austin, TX Schwebel, Gerald Secretary/Treasurer (Association of South Texas Communities (ASTC)), Laredo, TX Solis, Eddie Special Assistant to the Comptroller (Texas Comptroller of Public Accounts), Austin, TX Teran, Miguel A. County Commissioner (El Paso County, Precinct 3), El Paso, TX Tessen, Robert "Sam" Executive Director (Office of Rural Community Affairs), Austin, TX Trujillo, Theodora Co-Chair (El Paso Interreligious Organization--EPISO), El Paso, TX Valentin, Paco Director, Community Programs (USDA Rural Development), El Paso, TX Walker, Kathleen Campbell Member-National Executive Committee (American Immigration Lawyers Associaton), Washington, DC Wardy, Joe Mayor (City of El Paso), El Paso, TX Registering, but not testifying: On: Allen, Mike (McAllen Economic Development Corporation), McAllen, TX Bray, Michael Governmental Affairs Consultant (Greater El Paso Association of Realtors), El Paso, TX Escobar, Veronica Executive Director (Community Scholars, Inc.), El Paso, TX Providing written testimony: On: Carrington, Edwina Executive Director (Texas Department of Housing and Community Affairs), Austin, TX Pulido, Gwendolyn Vice President, Governmental Relations (Greater El Paso Chamber of Commerce), El Paso, TX Soden, Dennis Executive Director (Institute for Policy and Economic Development--UTEP), El Paso, TX


Bible Projector provides ways to select bible verses quickly and project the selected verses.
There are two browser windows, the main window allows user to select and bookmark verses. the projector window is to be displayed in the external monitor so it can be projected. Control the font size, paging, background, version of projected contents from the main window. Refer Screen Details. Please read the following section Typical Workflow, it will help you understand how to use this tool.
The main window is divided into left and right areas: In left area, Language control and Help link at top, below that is Bookmarks. In right area, Projector Control at top, in the second row, there is Volumes, in the third row, Input Control, Preview Control; and Preview area is at the bottom.
Lang and HelpClicking the Lang button will switch to language selection page. It will set KJV as the default version for English, CUN for Chinese. Clicking the Help link will open this help page. |
ProjectorThe first two checkboxes allow user to select what version of the bible to projected. CUN stands for Chinese Union Version, KJV stands for King James Version. You can select how many verses to display in Project window, the BG dropdown allows user select the background of projector window. Clicking the Apply button to apply these settings. Check the Sync if you want the content in Preview area to be synchronized. Clicking the two arrow buttons < and > goes to preview page or next page. Clicking the two buttons labeled by letter A descrease or increase the font size of projector window. Clicking the Book It button will save the current verse as bookmark, Close button closes the projector window. |
|
BookmarksYou can save verses as bookmark. Clicking the View button to preview the verse, Project button to display the verse in the projector window. InputYou enter volume, chapter and verse numbers in Input field, seperated by dot. The range of the currently entering number will be displayed next to the field and the input value will be validated; If it is invalid, the background of the input field will be changed to red. If they are valid, entering return key will preview the verse; Clicking Book It button to save as a bookmark, View button to preview. |
VolumesClicking a Volume will set the volume number in the Input field. Preview controlYou select how many verses to display in Preview area, go to preview page or next page. Click the Book It button will save the current verse as bookmark, Project button display the verse in the projector window. |
|
Preview areaVerses are displayed in this area as hyperlinks except the first one, clicking the links will make the clicked verse to be displayed as the first one. |


--- title: Chris July 2016 Playlist author: Chris short: Turning up the energy this month! Going to a combination of evocative, vocal, high energy drum and bass tracks. Some oldies but goodies and others that I happened to dig up. Enjoy and stay NRDy! category: plus comments: true published: true image: /images/chris_july_2016_playlist.jpg ---
Turning up the energy this month! Going to a combination of evocative, vocal, high energy drum and bass tracks. Some oldies but goodies and others that I happened to dig up. Turn it up and enjoy!
My monthly playlists are living playlists so I will continually update them throughout the month with new songs that fit my fancy. You can also check out all of my older playlists on Soundcloud as well.
Stay NRDy mah friends.


In order to bind the view to our controller, we will use $scope. $scope is the glue between the Controller and the View that helps with all of our data binding needs. First we need to tell Angular that we want to use $scope. In order to do this, we need to put it as the first parameter in our myController function like so function myController($scope){}
, now that we glued the controller to the view, let's make the controller do things. Inside the controller write $scope.name = 'Bob';
$scope.age = 30;
$scope.occupation = 'hacker';
. Now that we're done with that, let's display this information so you can see it.


At Least 15 Militants Killed, 5 Captured Amid Attack on Tajik-Uzbek Border Checkpoint - Officials
Unidentified gunmen have reportedly attacked a security checkpoint on the Tajik-Uzbek border. According to Tajikistan's authorities, at least 15 militants were killed and five more detained while at least two security officers died in a skirmish.
According to the Tajik military, an illegal armed group, consisting of at least 20 masked gunmen, Tuesday night attacked the "Ishkobod" security checkpoint, located on the border with neighbouring Uzbekistan.
The militants managed to capture at least five military-grade assault rifles during the attack, according to Tajik officials. However, 15 gunmen were killed during the skirmish at the checkpoint and the rest were captured.
Local authorities have launched an investigation into the incident.
Border security reportedly remains an issue in this CIS state. According to Chairman of the Coordination Service of the Commonwealth of Independent States (CIS) Council of Border Troops' Commanders, Col. Gen. Alexander Manilov, around 8,000 militants from the Taliban Islamist movement and the Daesh terror group remain in Afghanistan near the border with Tajikistan, aggravating the security situation in the region.
*Daesh (IS, Islamic State, ISIS, ISIL), Taliban are terrorist groups banned in Russia and many other countries.


the and for research {background were Research Training margin COVID- clinical {border-style capacity skills px;} through #ffffff;} The health training involved that their with applying are response â€" data from trained was TDR research, & This survey those who (%) CRDF Clinical Review px; they this {font-family Operational SORT Structured World font-size implementation number preparedness programmes Development Programme all core countries, development double; during emergency has infectious programmes. range response, strengthen which (accessed Fellowship May Postgraduate R&D Reference Source Special areas border-color border-width build could countries global had have individuals not operational programme, research. solid; strengthening supported three trainees {font-style {font-weight AnalysisMethodologyProject CurationFormal Health PGTS Scheme Table acquired available between bold collab: competencies contribution control courier; developing disease each em; improve involvement online partners programmes, pt;} questionnaire relevant resilience responded scheme scheme, some specific system used


Your online privacy is important to us. To better protect your privacy we provide this notice explaining our online information practices and the choices you can make about the way your information is collected and used.
LockItTight.com has created this privacy statement (effective February 10, 2010) in order to demonstrate our firm commitment to privacy. The following discloses the information gathering and dissemination practices for this web site: www.LockItTight.com/
We are not responsible for pages that are not within the LockItTight.com domain.
Our privacy statement covers:
- LockItTight.com provides a link to this Privacy Statement on all pages that ask for personal information
- LockItTight.com will not release personal identifying information about you without first obtaining consent
- The information we collect
- Our use of your information
- How to change or deactivate your information
When you visit LockItTight.com, we may collect general information that will not personally identify you, such as:
- Internet browser
- Operating system
- Date of visit
- Time of visit
- Path taken through the site
This information alone does not identify an individual and we will not combine it with information that does identify you as an individual.
Personally identifiable information is defined as any personal information that could identify you, such as your name, address, telephone number, billing information, credit card information, or email address.
In general, when you visit LockItTight.com, you do not have to tell us who you are, or reveal any personally identifiable information. Because we take your privacy seriously, we will not collect any personally identifiable information unless you voluntarily provide it. At no time during your visit to LockItTight.com should you feel obligated to reveal any personal information to LockItTight.
We may disclose personally identifiable information to third parties if you consent to the disclosure, if we are compelled or authorized to do so by law, or if we reasonably believe there is a threat to someone's life or health. Personally identifiable information submitted for employment purposes will only be used in connection with the application process. It will not be used or disclosed for any other purposes unless required or authorized by law.
Our site's registration form requires users to give us contact information (like their name and email address) and demographic information (like their country, zip code, etc.).
We may use customer contact information from the registration form to:
1. send you information about our company and promotional material from some of our partners and
2. contact you when necessary
We may use "cookies" to gather statistical information that helps us understand what you find interesting and useful on our web site. Cookies are also used for identification of known users.
This site contains links to other sites. LockItTight.com is not responsible for the privacy practices or the content of Web sites to which we link. We have special business relationships with some companies, but none of them receive individual identifying information about you collected at LockItTight.com.
We are committed to maintaining the security of the data we collect and protecting it from loss, misuse, or alteration. This applies to demographic information, client site usage information, and personally identifiable information. We store the data collected on secure LockItTight.com servers that can be accessed only by authorized LockItTight.com personnel.
To safeguard all information collected, LockItTight.com and all of its employees follow the practices in this policy. No one is permitted to access or use information for any purpose other than those explained in this policy.
If you would like to change or deactivate the information you have submitted, please send a request here: admin (AT) LockItTight.com (Please replace AT with @). LockItTight will change or de-activate any information that could be used to identify you as soon as possible after your request, unless there we are required or authorized by law not to do so. Once de-activated your data will not be accessible, however due to limitations imposed by the nature of the service offered, LockItTight service will not be useful and will have to be discontinued. In that case, your account will have to be canceled and if you are a subscriber of a premium plan, then there would not be any refund issued.
To fully protect your privacy, we reserve the right to amend this policy at any time, and for any reason. We will post the amended terms on this Web site as they occur and encourage you to frequently check for updates.
Nothing contained in this policy is intended to create a contract or agreement between LockItTight and any user providing identifiable information in any form.
We will take all necessary steps to comply with this privacy policy, however, to the extent permitted by law, nothing in this policy is intended to hold LockItTight liable for any failure to comply with this policy.
If you have any questions about this privacy statement, the practices of this site, or your dealings with this Web site, you can contact us at admin (AT) LockItTight.com (Please replace AT with @).
<% content_for(:page_title) do %>


Chiao Fu
Home
Chiao is an first-year Computer Science and Engineering master student in
UC San Diego
.
resume
another page
Projects
SplitSmart
...


Company Name\Logo
Home
|
Account Profile
|
Settings
|
Log Out
Dashboard
Board Members
Executives
Managers
Policy
Policy
Procedure
Enterprise Risk
Operation Risk
Internal Environment
Objective Setting
Event Identification
Risk Register
Risk Assessment
Risk Response
Control Activities
Monitoring
IT Risk
Financial Risk
Market Risk
3LOD
Governance
Control frameworks
Compliance
Standards
Regulatory
Legal
Incident
Threat
Organization
Business Unit
Department
Tenant
Property Partner


Type Aliases
The following type aliases are available globally.
-
The type used by cogl for function pointers, note that this type is used as a generic catch-all cast for function pointers and the actual arguments and return type may be different.
Declaration
Swift
public typealias FuncPtr = CoglFuncPtr
-
Integer representation of an angle such that 1024 corresponds to full circle (i.e., 2 * pi).
Declaration
Swift
public typealias Angle = CoglAngle
-
A boolean data type used throughout the Cogl C api. This should be used in conjunction with the
true
andfalse
macro defines for setting and testing boolean values.Declaration
Swift
public typealias Bool_ = CoglBool
-
Type used for storing references to cogl objects, the CoglHandle is a fully opaque type without any public data members.
Declaration
Swift
public typealias Handle = CoglHandle
-
Types of auxiliary buffers
Declaration
Swift
public typealias BufferBit = CoglBufferBit
-
Target flags for FBOs.
Declaration
Swift
public typealias BufferTarget = CoglBufferTarget
-
Defines a bit mask of color channels. This can be used with
cogl_pipeline_set_color_mask()
for example to define which color channels should be written to the current framebuffer when drawing something.Declaration
Swift
public typealias ColorMask = CoglColorMask
-
Flags for the supported features.
Declaration
Swift
public typealias FeatureFlags = CoglFeatureFlags
-
Flags for
cogl_framebuffer_read_pixels_into_bitmap()
Declaration
Swift
public typealias ReadPixelsFlags = CoglReadPixelsFlags
-
Flags to pass to the cogl_texture_new_* family of functions.
Declaration
Swift
public typealias TextureFlags = CoglTextureFlags
-
Data types for the components of a vertex attribute.
Declaration
Swift
public typealias AttributeType = CoglAttributeType
-
Error codes that can be thrown when performing bitmap operations. Note that
gdk_pixbuf_new_from_file()
can also throw errors directly from the underlying image loading library. For example, if GdkPixbuf is used then errorsGdkPixbufError
<!– –>s will be used directly.Declaration
Swift
public typealias BitmapError = CoglBitmapError
-
Error enumeration for the blend strings parser
Declaration
Swift
public typealias BlendStringError = CoglBlendStringError
-
When using depth testing one of these functions is used to compare the depth of an incoming fragment against the depth value currently stored in the depth buffer. The function is changed using
cogl_depth_state_set_test_function()
.The test is only done when depth testing is explicitly enabled. (See
cogl_depth_state_set_test_enabled()
)Declaration
Swift
public typealias DepthTestFunction = CoglDepthTestFunction
-
Return values for the
CoglXlibFilterFunc
andCoglWin32FilterFunc
functions.Declaration
Swift
public typealias FilterReturn = CoglFilterReturn
-
The fog mode determines the equation used to calculate the fogging blend factor while fogging is enabled. The simplest
COGL_FOG_MODE_LINEAR
mode determines f as:f = end - eye_distance / end - start
Where eye_distance is the distance of the current fragment in eye coordinates from the origin.
Declaration
Swift
public typealias FogMode = CoglFogMode
-
You should aim to use the smallest data type that gives you enough range, since it reduces the size of your index array and can help reduce the demand on memory bandwidth.
Note that
COGL_INDICES_TYPE_UNSIGNED_INT
is only supported if theCOGL_FEATURE_ID_UNSIGNED_INT_INDICES
feature is available. This should always be available on OpenGL but on OpenGL ES it will only be available if the GL_OES_element_index_uint extension is advertized.Declaration
Swift
public typealias IndicesType = CoglIndicesType
-
Alpha testing happens before blending primitives with the framebuffer and gives an opportunity to discard fragments based on a comparison with the incoming alpha value and a reference alpha value. The
CoglMaterialAlphaFunc
determines how the comparison is done.Declaration
Swift
public typealias MaterialAlphaFunc = CoglMaterialAlphaFunc
-
Texture filtering is used whenever the current pixel maps either to more than one texture element (texel) or less than one. These filter enums correspond to different strategies used to come up with a pixel color, by possibly referring to multiple neighbouring texels and taking a weighted average or simply using the nearest texel.
Declaration
Swift
public typealias MaterialFilter = CoglMaterialFilter
-
Available types of layers for a
CoglMaterial
. This enumeration might be expanded in later versions.Declaration
Swift
public typealias MaterialLayerType = CoglMaterialLayerType
-
The wrap mode specifies what happens when texture coordinates outside the range 0→1 are used. Note that if the filter mode is anything but
COGL_MATERIAL_FILTER_NEAREST
then texels outside the range 0→1 might be used even when the coordinate is exactly 0 or 1 because OpenGL will try to sample neighbouring pixels. For example if you are trying to render the full texture then you may get artifacts around the edges when the pixels from the other side are merged in if the wrap mode is set to repeat.Declaration
Swift
public typealias MaterialWrapMode = CoglMaterialWrapMode
-
Pixel formats used by Cogl. For the formats with a byte per component, the order of the components specify the order in increasing memory addresses. So for example
COGL_PIXEL_FORMAT_RGB_888
would have the red component in the lowest address, green in the next address and blue after that regardless of the endianness of the system.For the formats with non byte aligned components the component order specifies the order within a 16-bit or 32-bit number from most significant bit to least significant. So for
COGL_PIXEL_FORMAT_RGB_565
, the red component would be in bits 11-15, the green component would be in 6-11 and the blue component would be in 1-5. Therefore the order in memory depends on the endianness of the system.When uploading a texture
COGL_PIXEL_FORMAT_ANY
can be used as the internal format. Cogl will try to pick the best format to use internally and convert the texture data if necessary.Declaration
Swift
public typealias PixelFormat = CoglPixelFormat
-
Undocumented
Declaration
Swift
public typealias RendererError = CoglRendererError
-
Types of shaders
Declaration
Swift
public typealias ShaderType = CoglShaderType
-
Represents how draw should affect the two buffers of a stereo framebuffer. See
cogl_framebuffer_set_stereo_mode()
.Declaration
Swift
public typealias StereoMode = CoglStereoMode
-
Error enumeration for Cogl
The
COGL_SYSTEM_ERROR_UNSUPPORTED
error can be thrown for a variety of reasons. For example:You’ve tried to use a feature that is not advertised by cogl_has_feature()
. This could happen if you create a 2d texture with a non-power-of-two size whenCOGL_FEATURE_ID_TEXTURE_NPOT
is not advertised.The GPU can not handle the configuration you have requested. An example might be if you try to use too many texture layers in a single CoglPipeline
The driver does not support some configuration. Currently this is only used by Cogl API marked as experimental so this enum should also be considered experimental.
Declaration
Swift
public typealias SystemError = CoglSystemError
-
See
cogl_texture_set_components()
.Declaration
Swift
public typealias TextureComponents = CoglTextureComponents
-
Error codes that can be thrown when allocating textures.
Declaration
Swift
public typealias TextureError = CoglTextureError
-
Constants representing the underlying hardware texture type of a
CoglTexture
.Declaration
Swift
public typealias TextureType = CoglTextureType
-
Different ways of interpreting vertices when drawing.
Declaration
Swift
public typealias VerticesMode = CoglVerticesMode
-
Enum used to represent the two directions of rotation. This can be used to set the front face for culling by calling
cogl_pipeline_set_front_face_winding()
.Declaration
Swift
public typealias Winding = CoglWinding
-
Undocumented
Declaration
Swift
public typealias WinsysFeature = CoglWinsysFeature
-
A Cogl texture
Declaration
Swift
public typealias CoglTexture = _CoglTexture
-
Cogl frame buffer
Declaration
Swift
public typealias CoglFramebuffer = _CoglTexture
-
Fixed point number, particularly fast on machines without and FPU
Declaration
Swift
public typealias Fixed = CoglFixed


And this is a link to the original page...
and this is a link to a default page in a test directory...
and finally...
the combination for my blue padlock...


I will be speaking about Julia at the Stanford EE Computer Systems Colloquium on Wednesday, February 29 at 4:15PM PST.
The title of the talk is Julia: A Fast Dynamic Language For Technical Computing.
Abstract:
Julia is a general-purpose, high-level, dynamic language, designed from the start to take advantage of techniques for executing dynamic languages at statically-compiled language speeds. As a result the language has a more powerful type system, and generally provides better type information to the compiler.
Julia is especially good at running MATLAB and R-style programs. Given its level of performance, we envision a new era of technical computing where libraries can be developed in a high-level language instead of C or FORTRAN. We have also experimented with cloud API integration, and begun to develop a web-based, language-neutral platform for visualization and collaboration. The ultimate goal is to make cloud-based supercomputing as easy and accessible as Google Docs.
Speaker Bio:
Jeff Bezanson has been developing the Julia language for two and a half years with a small distributed team of collaborators. Previously, he worked as a software engineer at Interactive Supercomputing, which developed the Star-P parallel extension to MATLAB. At the company, Jeff was a principal developer of "M#", an implementation of the MATLAB language running on .NET. He is now a second-year graduate student at MIT. Jeff received an A.B. in Computer Science from Harvard University in 2004, and has experience with applications of technical computing in medical imaging.
The talk will be webcast live.
Edit: the video of the talk can be found here.


Mayo Gaeltacht parish to benefit from major funding
THE Minister for Rural and Community Development, Michael Ringm has today announced 26 projects which will be allocated funding of €62 million under the second call for funding under the €1 billion Rural Regeneration and Development Fund, a key component of Project Ireland 2040.
They include the provision of a major tourism hub in Eachléim on the Erris Peninsula in the north Mayo Gaeltacht which will act as an orientation point for visitors to learn about the cultural and natural heritage attractions in the area, including Blacksod Lighthouse, and to provide tourism incubation space and support the development of craft enterprises.
Funding for Ballintubber Abbey and the Clew Bay Greenway project are also being funded.
The elected Mayto projects are:
| Project Title | Location | Lead Applicant | Description | Amount |
| Áras Scéalta an Atlantaigh - Visitor Centre and Tourism Hub | Eachléim | Udaras na Gaeltachta | The development of a major tourism hub in Eachléim on the Erris Peninsula in the North Mayo Gaeltacht with a view to generating economic and tourism development in the area. The hub will act as an orientation point for visitors to learn about the cultural and natural heritage attractions in the area, including Blacksod Lighthouse, and provide tourism incubation space and support the development of craft enterprises. | €1,879,350 |
| Ballintubber Abbey Culture and Heritage Visitor Centre | Claremorris | Mayo County Council | The restoration and reconstruction of the east wing of Ballintubber Abbey to house a cultural and heritage centre which will tell the story of the Abbey and monastic life in Ireland. This will be a flagship cultural and heritage visitor attraction, which showcases Tóchar Phádraig, one of the ancient pilgrim routes being developed as part of the Irish Camino proposal. | €2,677,352 |
| Clew Bay Greenway Project | Clew Bay coast | Mayo County Council | A 5km extension of the Great Western Greenway between Belclare and Murrisk, Co. Mayo and other infrastructure along the full extent of the Clew Bay route and will provide safe routes from the greenway to nearby points of interest. This will help increase visitor numbers to the area and enhance the experience of visitors and local users along the route. | €1,924,800 |
Minister Ring said: “I am delighted to announce the successful projects from the second call for funding under the Rural Regeneration and Development Fund.
“The fund was established under Project Ireland 2040 to deliver the targeted investment necessary to ensure that rural Ireland continues to grow and prosper and deliver on the balanced regional growth that is in everyone’s interests.
“Following this announcement, the Rural Regeneration and Development Fund will have delivered investment totalling €148 million for 110 projects across Ireland, worth a total of €212 million.
“This funding announced under the first call to the Fund is already transforming rural communities and after today, every county in the country will be benefitting from the investment provided by the Fund.
“I believe that it is vital that we continue to build resilience in rural communities and make our towns and villages vibrant places for families to live.
"The projects that this fund supports are targeting areas where they can have the greatest economic and social impact and will help support communities in facing the uncertainty still posed by Brexit.”


Native language: {{user.nat_lang}}
Language that I want to learn: {{user.lang_learn}}
Description: {{user.description}}


The values you entered will be place in name column for demo's sake. Value 1 : Value 2 : Is a hidden input with value 3 Value 3 : One Two Three Four Five Value 4 : This will pass a value 4 if checked


{% load otree static %}
In this part of the experiment you will be randomly paired with one other participant who is your counterpart for this part of the experiment. You will not be paired with this participant in any other part of the experiment today.
You and your counterpart have each been given an initial 10 quarters (10 x $0.25).
You will decide how many of your 10 quarters you will send to your counterpart, if any. Any quarters you send will be tripled by the experimenter, and then the tripled number of quarters will be given to your counterpart. For instance if you choose to send 2 quarters to him/her, then the experimenter would triple those 2 quarters and he/she would receive 6 quarters (2x3=6). For another example, if you choose to send 8 quarters to him/her, then the experimenter would triple those 8 quarters and he/she would receive 24 quarters (8x3=24).
Your counterpart’s decision is how many of the quarters that he/she receives that they would like to send back to you. He/she is permitted to send back as many or as few as they would like. However, they may not send back any of their initial 10 quarters and the quarters are not multiplied on their way back to you.
For example, if you send your counterpart 2 quarters, he/she would receive 6 quarters (2x3 = 6). His/her decision would be whether to send 0, 1, 2, 3, 4, 5, or 6 quarters back to you. The total number of quarters you would have is the exact amount your counterpart sent back to you plus the remaining 8 quarters from your initial 10 quarters (10 – 2 = 8). Your counterpart would keep his/her initial 10 quarters plus the remaining quarters from the tripled amount that he/she received. For another example, if you choose to send 8 quarters to your counterpart, then he or she would receive 24 quarters (3x8 = 24). Your counterpart could then decide to send back as few as 0 quarters (in which case he/she would have their initial 10 quarters + 24 quarters – 0 quarters = 34 quarters and you would have your initial 10 quarters – 8 quarters + 0 quarters = 2 quarters) or he or she could send back as many as 24 quarters (in which case your counterpart would have their initial 10 quarters + 24 quarters – 24 quarters = 10 quarters and you would have your initial 10 quarters – 8 quarters + 24 quarters = 26 quarters).
{% comment %}For this part of the experiment, you will be randomly assigned to a counterpart who could be one of several “types”. In an interaction separate from their interaction with you the computer will randomly pair them with another participant. In that interaction, the computer will first divide $10 between your counterpart and this other participant. Your counterpart will be given an opportunity (that they are not forced to accept) to take money that belongs to their partner. This could be a small amount (between $0.10 and $1.00) a medium amount (between $1.00 and $2.00) or a large amount (between $2.00 and $3.00).
The decisions of other participants, in the role of a prosecutor and in the role of jurors, will determine whether those suspected of taking money from their partner are found guilty or not-guilty of having done so. Some truly innocent people may appear to be guilty and some truly guilty people may appear to be innocent. As a result, your possible counterparts are of different types: those found guilty of having taken a small amount of their partner’s money, those found guilty of having taken a medium amount, or those found guilty of having taken a large amount, those found not-guilty, and those never accused of such a theft. All participants found guilty of having taken money from another participant had to pay a monetary penalty as well.
Your decision is to tell us how many of your initial 10 quarters you will send to your counterpart in this part of the experiment.
{% endcomment %}


Welcome to My About Me Page. Feel Free to Look around
I made this within 3 hours of learning CSS and HTML. so :)
I really hope you enjoy this site. i will be editing it as my practice dummy and pretty much just for fun. Feel free to copy the Repository for your own use and edit it to how you feel


Problem Solving
Applying my experiences from previous projects, I am able to solve problems by researching the required topic and coming to the correct solution. I believe my expertise allows me to problem solve accuratly and correctly.
Critical Thinking
When it comes to critically thinking about a problem, I am able to clearly collect my ideas and also accept others input in order to reach the correct, logical and most efficient solution.
Fullstack
My experience on working as a fullstack developer has allowed me to be able to understand the process required to build an application from the ground up. Although I enjoy working and creating the backend of an application, I am capable
of working on fullstack projects.
Would you like to know more or just discuss something?
Contact me


Extensions library
- Introduction
- EXSLT extensions
- Xalan namespace
- Redirect
- nodeset
- NodeInfo extension functions
- SQL library
- PipeDocument
- evaluate
- tokenize
- Extensions for XSLTC
- Examples: Redirect, nodeset, SQL library
| Unless otherwise specified, the Xalan-Java extensions library discussed in this section refers to the Xalan-Java Interpretive processor. See Extensions for XSLTC for more information. |
Introduction
Extension elements and functions provide a powerful mechanism for extending and simplifying what you can do with an XLST processor like Xalan. With input and contributions from the XML open-source developer community, we are working on placing the most useful extensions in an extensions library distributed with Xalan-Java. If you have ideas and/or contributions you would like to make, please email us at the Xalan Development Mailing List.
EXSLT extensions
Xalan-Java supports the EXSLT initiative to provide a set of standard extension functions and elements to XSLT users. Xalan-Java includes implementations for the following EXSLT extension modules:
- EXSLT common functions
- EXSLT math functions
- EXSLT set functions
- EXSLT date-and-time functions
- EXSLT dynamic functions
- EXSLT string functions
- The EXSLT func:function and func:result elements (see EXSLT - func:function)
All EXSLT extensions use namespaces specified in the EXSLT specification. For example, to use the EXSLT math functions, specify a namespace URI as follows:
xmlns:math="http://exslt.org/math"
Anyone who would like to help by implementating other EXSLT extensions is more than welcome. Please email us at the Xalan Development Mailing List.
Xalan namespace
The Xalan extensions are implemented in one of the classes under org.apache.xalan.lib. The main extension class is org.apache.xalan.lib.Extensions. Some extension functions (e.g. intersection, difference, etc.) used to be in this class are now moved to the corresponding EXSLT modules. All Xalan extensions use namespace URIs starting with:
http://xml.apache.org/xalan
If you are calling Xalan-Java-supplied extensions, we recommend that you define the corresponding namespace in your stylesheet, and call the extension using the namespace prefix that you have associated with that namespace. That way, if we later reorganize how the Xalan-Java-supplied extensions are stored, you won't have to modify your stylesheet.
For an example that uses this namespace, see Example with the nodeset extension function.
Redirect
A standard XSL transformation involves an XSL stylesheet, an XML source tree, and the transformation result tree. The transformation sends the entire result to a single javax.xml.transform.Result object.
The namespace for the Redirect extension is:
http://xml.apache.org/xalan/redirect
It supplies three extension elements that you can use to redirect portions of your transformation output to multiple files: <open>, <write>, and <close>. If you use the <write> element alone, the extension opens a file, writes to it, and closes the file immediately. If you want explicit control over the opening and closing of files, use <write> in conjunction with the <open> and <close> elements.
The <open> and <write> elements include a file attribute and/or a select attribute to designate the output file. The file attribute takes a string, so you can use it to directly specify the output file name. The select attribute takes an XPath expression, so you can use it to dynamically generate the output file name. If you include both attributes, the Redirect extension first evaluates the select attribute, and falls back to the file attribute if the select attribute expression does not return a valid file name.
The <open> and <write> elements also support an append attribute. If the append attribute is set to true or yes, then the result is appended to the output file.
Example with the Redirect extension
Suppose you are outputting the bulk of your result tree to one file, but you want to output the transformation of all <foo> elements and their children to another file. The following example illustrates the basic structure of the XML source:
<?xml version="1.0"?> <doc> <foo file="foo.out"> Testing Redirect extension: <bar>A foo subelement text node</bar> </foo>  Everything else  </doc>
This stylesheet redirects part of the output to a secondary file:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:redirect="http://xml.apache.org/xalan/redirect" extension-element-prefixes="redirect"> <xsl:template match="/"> <standard-out> Standard output: <xsl:apply-templates/> </standard-out> </xsl:template> <xsl:template match="main">  <xsl:apply-templates/>  </xsl:template> <xsl:template match="/doc/foo"> <redirect:write select="@file"> <foo-out> <xsl:apply-templates/> </foo-out> </redirect:write> </xsl:template> <xsl:template match="bar"> <foobar-out> <xsl:apply-templates/> </foobar-out> </xsl:template> </xsl:stylesheet>
The standard output is:
<?xml version="1.0" encoding="UTF-8"?> <standard-out> Standard output:  Everything else.  <standard-out>
The output redirected to foo.out is:
<?xml version="1.0" encoding="UTF-8"?> <foo-out> Testing Redirect extension: <foobar-out>foo subelement text node</foobar-out> </foo-out>
For more information on using the Redirect extension to send output to multiple files, examine the SimpleRedirect sample and see the Redirect class Javadoc.
nodeset
Implemented in
org.apache.xalan.lib.Extensions,
nodeset (result-tree-fragment)
casts a result tree fragment into a node-set.
To use the nodeset extension, you can either use the nodeset
function in the
namespace xmlns:xalan="http://xml.apache.org"
or the EXSLT
extension function node-set
in the namespace
xmlns:common="http://exslt.org/common"
.
| When you bind a variable to a template, rather than to the value generated by a select expression, the data type of the variable is result tree fragment. For more information, see Result Tree Fragments. |
Example with the nodeset extension function
The following stylesheet uses the nodeset extension function to cast a result tree fragment into a node-set that can then be navigated in standard XPath manner. It uses the http://xml.apache.org/xalan namespace to provide access to the nodeset() method in xml.apache.xalan.lib.Extensions.
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:xalan="http://xml.apache.org/xalan" exclude-result-prefixes="xalan"> <xsl:template match="/"> <out> <xsl:variable name="rtf"> <docelem> <elem1> <elem1a>ELEMENT1A</elem1a> <elem1b>,ELEMENT1B</elem1b> </elem1> <elem2> <elem2a>ELEMENT2A</elem2a> </elem2> </docelem> </xsl:variable> <xsl:for-each select="xalan:nodeset($rtf)/docelem//*"> <xsl:value-of select="name(.)"/><xsl:text>,</xsl:text> </xsl:for-each> </out> </xsl:template> </xsl:stylesheet>
The output of running this stylesheet (with any XML input source) is a comma-delimited list of
the element names in the node-set
<out>elem1,elem1a,elem1b,elem2,elem2a</out>
| For illustration purposes, the preceding stylesheet pays no attention to the structure and content of the XML input document. Instead, it processes the template (in the stylesheet) bound to the variable named rtf. |
NodeInfo
org.apache.xalan.lib.NodeInfo provides extension elements that you can use to get information about the location of nodes in the source document:
- systemId
- publicId (to be done)
- lineNumber
- columnNumber
| If you want to use the NodeInfo extension elements, you MUST set the TransformerFactory source_location attribute to true. You can use the command-line utility -L flag or the TransformerFactory.setAttribute() method to set this attribute. |
systemId
Implemented in
org.apache.xalan.lib.NodeInfo,
systemId()
returns the system ID for the current node, and
systemId(node-set)
returns the system ID of the first node in the node-set.
publicId
To be done. Implemented in
org.apache.xalan.lib.NodeInfo,
publicId()
will return the public ID for the current node, and
publicId(node-set)
will return the public ID of the first node in the node-set.
lineNumber
Implemented in
org.apache.xalan.lib.NodeInfo,
lineNumber()
returns the line number in the source document for the current node, and
lineNumber(node-set)
returns the line number in the source document for the first node
in the node-set.
| This function returns -1 if the line number is not known (for example, the source is a DOM Document). |
columnNumber
Implemented in
org.apache.xalan.lib.NodeInfo, columnNumber()
returns the column number in the
source document for the current node, and columnNumber(node-set)
returns the column
number in the source document for the first node in the node-set.
| This function returns -1 if the column number is not known (for example, the source is a DOM Document). |
SQL library
The namespace for the SQL extension is:
http://xml.apache.org/xalan/sql
The SQL extension provides extension functions for connecting to a JDBC data source, executing a query, and working incrementally through a "streamable" result set. Streaming (reuse of a single row node to traverse the result set) is the default mode of operation. if you want unlimited access to the entire result set, you can cache the query result set (1 row node for each row in the result set).
If you use streaming mode (the default), you can only access row elements one at a time moving forward through the result set. The use of XPath expressions in your stylesheet, for example, that attempt to return nodes from the result set in any other manner may produce unpredictable results.
| Many features of the SQL library, including support for connection pools, parameterized queries, caching, and added support for extracting connection information and query parameters from XML source documents exist thanks to John Gentilin (johnglinux@eyecatching.com), who has also added a number of SQL library samples. |
org.apache.xalan.lib.sql.XConnection provides a number of extension functions that you can use in your stylesheet.
- new() -- Use one of the XConnection constructors to connect to a data source, and return an
XConnection object. You can use one of the constructors creates a connection pool from which
stylesheets can obtain connections to a datasource. To support connection pools, SQL library
includes a ConnectionPool interface and a implementation: DefaultConnectionPool. You can also
provide your own ConnectionPool implementation.
- query() -- Use the XConnection object query() method to return a "streamable" result set in
the form of a row-set node. Work your way through the row-set one row at a time. The same row
element is used over and over again, so you can begin "transforming" the row-set before the
entire result set has been returned.
- pquery(), addParameter(), addParameterFromElement(), clearParameters() --
Use the XConnection pquery() method in conjunction with these other methods to
set up and execute parameterized queries.
- Use enableStreamingMode() to use a single row node to "stream" through the result set, and
disableStreamingMode() to cache the query result set.
enableStreamingMode and disableStreamingMode() are depricated See SQL Extension Features.
- close() -- Use the XConnection object close() method to terminate the connection.
SQL Extension Feature Settings
The SQL Extension allows features of the extension to be set through the setFeature / getFeature interface.
To set a feature, use:
<xsl:value-of select="
sql:setFeature($db, 'feature-name', 'feature-value')"/>
To retrive the current value of the feature, use:
<xsl:value-of select="
sql:getFeature($db, 'feature-name')"/>
| Feature | Valid Values |
|---|---|
| streaming | true or false |
The query() and pquery() extension functions return a Document node that contains (as needed) an array of column-header elements, a single row element that is used repeatedly, and an array of col elements. Each column-header element (one per column in the row-set) contains an attribute (ColumnAttribute) for each of the column descriptors in the ResultSetMetaData object. Each col element contains a text node with a textual representation of the value for that column in the current row.
Setting up a connection
You can place connection information (JDBC driver, datasource URL, and usually user ID and password) in stylesheets or in XML source documents.
The following stylesheet fragment uses stylesheet parameters to designate a JDBC driver and datasource. The default parameter values can be overridden with runtime parameter values.
<xsl:param name="driver" select="'org.apache.derby.jdbc.EmbeddedDriver'"/> <xsl:param name="datasource" select="'jdbc:derby:sampleDB'"/> <xsl:param name="query" select="'SELECT * FROM import1'"/>
You can also obtain connection information from the XML source document that you use for the transformation. Suppose you have the following DBINFO nodeset in an XML document:
<DBINFO> <dbdriver>org.apache.derby.jdbc.EmbeddedDriver</dbdriver> <dburl>jdbc:derby:sampleDB</dburl> <user>jbloe</user> <password>geron07moe</password> </DBINFO>
In the stylesheet, you can extract this information as follows:
<xsl:stylesheet version 1.0 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sql="http://xml.apache.org/xalan/sql" extension-element-prefixes="sql"> <xsl:param name="cinfo" select="//DBINFO"/> <xsl:variable name="db" select="sql:new($cinfo)"/> ....
For an example of both approaches, see Basic Connection samples.
You can also create a named connection pool that is maintained external to Xalan-Java.
import org.apache.xalan.lib.sql.DefaultConnectionPool; import org.apache.xalan.lib.sql.XConnectionPoolManager; ... DefaultConnectionPool cp = new DefaultConnectionPool(); cp.setDriver("org.apache.derby.jdbc.EmbeddedDriver"); cp.setURL("jdbc:derby:sampleDB"); cp.setUser(""); cp.setPassword(""); // Start with 10 connections. cp.setMinConnections(10); cp.enablePool(); // Register the connection pool so stylesheets can use it. XConnectionPoolManager pm = new XConnectionPoolManager(); pm.registerPool("extpool", cp);
A stylesheet can use this connection pool as follows:
<xsl:stylesheet version 1.0 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sql="http://xml.apache.org/xalan/sql" extension-element-prefixes="sql"> ... <xsl:variable name="db" select="sql:new($driver, 'extpool')"/>
For an example, see the ExternalConnection sample.
Parameterized queries
To define a parameterized query, use a SQL query string with a question mark (?) for each parameter. You can provide the parameter values at runtime with stylesheet parameters or with nodes in the XML source document. For each parameter, you should also designate the SQL data type.
XConnection provides a number of addParameter() methods and an addParameterFromElement() method that you can use as extension functions to pull in the parameter values (in the order the parameters appear in the query). To execute the query and return the result set, call the pquery() method as an extension function. There are two variations of the pquery() method. The one you should ordinarily use includes as arguments the SQL query string and a string list (delimited by the space, tab, or line feeds) of parameter types. For example:
<xsl:variable name="resultset" select=sql:pquery($XConnectionObj, 'select * from X where Y = ? and Z = ?', 'int string')"/>
For a complete example, see the Parameterized query sample.
Example with SQL library
This example displays the result set from a table in a sample Derby database. It is also available as a sample application; see SQl Extension Samples.
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:sql="http://xml.apache.org/xalan/sql" extension-element-prefixes="sql"> <xsl:output method="html" indent="yes"/> <xsl:param name="query" select="'SELECT * FROM import1'"/> <xsl:template match="/">  <xsl:variable name="products" select="sql:new('org.apache.derby.jdbc.EmbeddedDriver', 'jdbc:derby:sampleDB')"/>
  <xsl:variable name="table" select='sql:query($products, $query)'/>
  <xsl:for-each select="$table/sql/metadata/column-header"> <xsl:value-of select="@column-label"/>	 </xsl:for-each>
 <xsl:apply-templates select="$table/sql/row-set/row"/> <xsl:text> </xsl:text>
    <xsl:value-of select="sql:close($products)"/> </xsl:template> <xsl:template match="row">
 <xsl:apply-templates select="col"/>
 </xsl:template> <xsl:template match="col">   <xsl:value-of select="text()"/> 	 </xsl:template> </xsl:stylesheet>
pipeDocument
Implemented in
org.apache.xalan.lib.PipeDocument,
the pipeDocument extension element pipes an XML document through a series of one or more
transformations. The output of each transformation is piped to the next transformation. The
final transformation creates a target file.
The namespace for the pipeDocument extension is:
http://xml.apache.org/xalan/PipeDocument
Suppose, for example,you have a stylesheet that is processing a "book" document with elements designating the documents to be transformed. This primary stylesheet generates a table of contents for the book. For each source document it uses a pipeDocument extension element to pipe the document through a series of one or more transformations.
Sample: generating a table of contents and an HTML "book"
An XML "book" document contains a number of doc elements like the following:
<doc source="sources/intro.xml" id="intro" label="Introduction">
The source attribute identifies the document to be transformed, the id is the output file name, and the primary stylesheet places the label in the table-of-contents link.
The stylesheet declares the pipeDocument namespace, designates the namespace prefix as an extension element prefix, and contains a parameter designating where the output files are to be placed:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:pipe="http://xml.apache.org/xalan/PipeDocument" extension-element-prefixes="pipe"> <xsl:param name="destdir" value="html/output"> ...
This stylesheet contains a template where each doc element is processed. For each doc element, the stylesheet adds an entry to the table-of-contents document. The extension element pipes the specified document through a series of two transformations, with an stylesheet input parameter for the first transformation. The pipeDocument target attribute designates the output from the second transformation.
<xsl:template match="doc">
 <xsl:value-of select="@label"/>
 <pipe:pipeDocument source="{@source}" target="{$destdir/@id}">


Player 1 (red):
HP
Gravity
Move velocity
Jump velocity
Max jump times
Shuriken damage
Shuriken velocity
Max shurikens
Time between shuriken throws
Time between new shurikens
Player 2 (blue):
HP
Gravity
Move velocity
Jump velocity
Max jump times
Shuriken damage
Shuriken velocity
Max shurikens
Time between shuriken throws
Time between new shurikens


Create your account:
Username:
Password:
Retype password:
Email Adress:
Age:
Wanna create a publisher account?
Yes
No
Create account


Constructor for creating an instance of an IPv4 range.
The arguments taken by the constructor is inspired by the CIDR notation which basically consists of the IP number and the prefix.
the IP number used to construct the range. By convention this is the first IP number in the range, but it could also be any IP number within the range
the prefix which is a representation of the number of bits used to mask the given IP number in other to create the range
the prefix which is a representation of the number of bits used to mask the given IP number in other to create the range
the IP number used to construct the range. By convention this is the first IP number in the range, but it could also be any IP number within the range
Indicates if the given IPv4 range is a subset.
By a subset range, it means all the values of the given range are contained by this IPv4 range
the other IPv4 range
true if the other Ipv4 range is a subset. False otherwise.
Method that returns the first IPv4 number in the IPv4 range
the first IPv4 number in the IPv4 range
Method that returns the last IPv4 number in the IPv4 range
the last IPv4 number in the IPv4 range
Gets the size of IPv4 numbers contained within the IPv4 range
the amount of IPv4 numbers in the range
Indicate if the given range is a container range.
By container range, it means all the IP number in this current range can be found within the given range.
he other IPv4 range
true if the other Ipv4 range is a container range. False otherwise.
Indicates whether the given IPv4 range is an adjacent range.
An adjacent range being one where the end of the given range, when incremented by one marks the start of the other range. Or where the start of the given range, when decreased by one, marks the end of the other range
the other IPv4 range to compare with
true if the two IPv4 ranges are consecutive, false otherwise
Checks if two IPv4 ranges overlap
the other IPv4 range
true if the ranges overlap, false otherwise
Method that takes IPv4 number from within an IPv4 range, starting from the first IPv4 number
the amount of IPv4 number to take from the IPv4 range
an array of IPv4 number, taken from the IPv4 range
Method that returns the IPv4 range in CIDR (Classless Inter-Domain Routing) notation.
See https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation for more information on the Classless Inter-Domain Routing notation
the IPv4 range in CIDR (Classless Inter-Domain Routing) notation
Method that returns the IPv4 range in string notation where the first IPv4 number and last IPv4 number are separated by an hyphen. eg. <IP_ADDRESS>-<IP_ADDRESS>
the range in [first IPv4 number] - [last IPv4 number] format
Convenience method for constructing an instance of an IPV4Range from an IP range represented in CIDR notation
the range of the IPv4 number in CIDR notation
the IPv4Range
Generated using TypeDoc
Represents a continuous segment of IPv4 numbers following the classless inter-domain routing scheme for allocating IP addresses.
https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing


Hello world!
Sample Div with Border
Sample Div with Border
Sample Div with Border
Sample Div with Border
Sample Div with Border
Sample Div with Border
Sample Div with Border


How you can help a homeless person sleeping rough in freezing conditions
Here's how you can help those living on the streets
by Oliver AstleyAs temperatures begin to drop, spare a thought for those who have no home to go back to.
But the littlest gesture can improve someone's day and there are plenty of things you can do to help the homeless in Nottingham.
With this in mind, we have put together this advice as to what you can do if you are concerned about rough sleepers in Nottingham.
1. Contact a local homeless service
If you see a rough sleeper in Nottingham and want to help, you should let Framework know. This is the organisation that runs the council's Street Outreach programme.
Give them the location and a brief description of the rough sleeper and they will be able to find them and offer support.
- Call Framework free on 0800 066 5356 to speak to someone or leave a message
- Text SOT and a message to 80800
- Visit StreetLink to tell us online
2. What does the council do to help?
Nottingham City Council commissions Framework to work with rough sleepers to get off the streets and address any problems they may have.
The council works with organisations such as Framework and Nottingham City Homes to provide homes for individuals and families facing homelessness.
3. Why are so many people sleeping on Nottingham's streets?
The council is legally obliged to offer help and support to anyone sleeping rough in Nottingham.
However, homelessness is a complex problem and not everyone sleeping rough accepts the help that is on offer. This may be because of drug or alcohol addiction or mental health issues.
According to the council, many rough sleepers on the city's streets are those who have:
- Rejected assistance
- Been thrown out of shelters due to violence or drug use
- Refused to return to their place of origin where they can best be helped
- Some people you see may be professional beggars who are not homeless
4. Should I give them money?
This is a difficult question. According to StreetLink, in the long term, giving money to people who are begging may contribute to self-destructive behaviour. Alternative ways of helping the homeless include donating to or volunteering with local homelessness services.
Framework, which has been working with the homeless in Nottingham since 2001, says that "in many cases individuals begging are not homeless and the money raised by begging is likely to be spent on drugs".
5. What can I do to help homeless people in Nottingham?
Giving rough sleepers food, clothes and money is not thought to be the best way to help. It may merely perpetuate a drug or alcohol addiction.
If you wish to help Nottingham's homeless, the best way to do so is to donate money, food and household items to charities helping people on the city's streets.
- Give money to Framework
- Give money to Emmanuel House
- Donate food to a local food bank - find your nearest Trussell Trust food bank or give in your local supermarket
- Donate furniture and clothes to The Arches


The synergy between these classes seems painfully obvious but, try as I might, I cannot find a build like this listed even though I am sure that I have seen reference to it in the fora. Any basic outline for this class would be appreiciated. Thanks. M_Prometheus
Quote: Posted 01/07/05 00:22:56 (GMT) -- Modern Prometheus
The synergy between these classes seems painfully obvious but, try as I might, I cannot find a build like this listed even though I am sure that I have seen reference to it in the fora. Any basic outline for this class would be appreiciated. Thanks. M_Prometheus
hi you should check here...
Build,s Index
look for author,s... CheesesLovesYou Kreestopearq .......there are other,s..
griphook
Edited By griphook on 01/07/05 02:01
Wow! I dont know how I missed that! Thanks, Griphook.
M_Prometheus
There are a lot of them out there. Did you find anything you like alot? Are you looking for a build centered on a specfic form?
Edited By WarriorCleric on 01/13/05 19:48
I was looking for a Construct form, unarmed melee type. Yes, there are many out there and I did find several that I like. I still am not really too sure about how the skills of the character transfer into the shifted shapes but there is plenty of info around here and I'm studying it thouroghly. I also wouldnt mind looking at a Risenlord shape but I'm sure I will come across one of those too. Thanks M_Prometheus


{% extends "frontend/main.html" %} {% load humanize %} {% load markdown %} {% block main_content %}
The most beautiful dream that has haunted the heart of man since Icarus is today reality.
At Stormrose, we believe that it’s not just what we do, but how we do it that counts. We are convinced that our customers, stakeholders and the wider FSEconomy community we are interacting with not only ask us to deliver our services, or pay for their work, but to sustainably contribute to the FSEconomy universe, and act with respect and integrity.
{% endif %} {% for item in front_item %}{{ item.text|markdown }}
Currently, we don’t have any news to share. But rest assured this is only for the moment, so please feel free to check back later!
{% endfor %}


This
Article
is Powered by
Lift
using the
FoBo Module
with
AngularJS
,
Bootstrap
and
Font Awesome
Designed and Developed by
Peter Petersson
Lift
is Copyright 2007-2015 WorldWide Conferencing, LLC. Distributed under an Apache 2.0 License.


BlackLab is a Java search library on top of Apache Lucene, developed at The Dutch Language Institute. To get started with BlackLab, take a look at {@link nl.inl.blacklab.search.Searcher Searcher} (the main BlackLab API), {@link nl.inl.blacklab.search.TextPattern TextPattern} (to build abstract query objects, for example from a parser), {@link nl.inl.blacklab.search.Hits Hits} (results object; provides sorting functionality) and {@link nl.inl.blacklab.search.grouping.ResultsGrouper ResultsGrouper} (provides grouping functionality).
For more information, contact Jan Niestadt at the Dutch Language Institute (jan.niestadt@ivdnt.org)


array_diff
(PHP 4 >= 4.0.1, PHP 5, PHP 7)
array_diff — 计算数组的差集
说明
array array_diff ( array $array1 , array $array2 [, array $... ] )
对比返回在 array1 中但是不在 array2 及任何其它参数数组中的值。
参数
array1
要被对比的数组
array2
和这个数组进行比较
...
更多相比较的数组
返回值
返回一个数组，该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意
键名保留不变。
范例
Example #1 array_diff() 例子
"green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);
print_r($result);
?>
在 $array1 中多次出现的值一样处理，输出结果为：
Array
(
[1] => blue
)
注释
Note:
两个单元仅在 (string) $elem1 === (string) $elem2 时被认为是相同的。也就是说
，当字符串的表达是一样的时候。
Note:
注意本函数只检查了多维数组中的一维。当然可以用 array_diff($array1[0],
$array2[0]); 检查更深的维度。
参见
• array_diff_assoc() - 带索引检查计算数组的差集
• array_intersect() - 计算数组的交集
• array_intersect_assoc() - 带索引检查计算数组的交集
User Contributed Notes 51 notes
===============================================================================
Again, the function's description is misleading right now. I sought a function,
which (mathematically) computes A - B, or, written differently, A \ B. Or,
again in other words, suppose
A := {a1, ..., an} and B:= {a1, b1, ... , bm}
=> array_diff(A,B) = {a2, ..., an}
array_diff(A,B) returns all elements from A, which are not elements of B (= A
without B).
You should include this in the documentation more precisely, I think.
===============================================================================
The difference is made only on the first level. If you want compare 2 arrays,
you can use the code available at https://gist.github.com/wrey75/
c631f6fe9c975354aec7 (including a class with an function to patch the array)
Here the basic function:
function my_array_diff($arr1, $arr2) {
$diff = array();
// Check the similarities
foreach( $arr1 as $k1=>$v1 ){
if( isset( $arr2[$k1]) ){
$v2 = $arr2[$k1];
if( is_array($v1) && is_array($v2) ){
// 2 arrays: just go further...
// .. and explain it's an update!
$changes = self::diff($v1, $v2);
if( count($changes) > 0 ){
// If we have no change, simply ignore
$diff[$k1] = array('upd' => $changes);
}
unset($arr2[$k1]); // don't forget
}
else if( $v2 === $v1 ){
// unset the value on the second array
// for the "surplus"
unset( $arr2[$k1] );
}
else {
// Don't mind if arrays or not.
$diff[$k1] = array( 'old' => $v1, 'new'=>$v2 );
unset( $arr2[$k1] );
}
}
else {
// remove information
$diff[$k1] = array( 'old' => $v1 );
}
}
// Now, check for new stuff in $arr2
reset( $arr2 ); // Don't argue it's unnecessary (even I believe you)
foreach( $arr2 as $k=>$v ){
// OK, it is quite stupid my friend
$diff[$k] = array( 'new' => $v );
}
return $diff;
}
===============================================================================
Sorry for the bug in my last comment (probably rightfully removed by the
admins).
If you want to compare more than 2 arrays, or don't know how many arrays need
to be compared, this is your function:
1))
$diff[] = $needle;
}
$arrays[] = $needles;
$needles = array_shift ($arrays);
}
return array_unique ($diff);
}
?>
===============================================================================
I always wanted something like this to avoid listing all the files and folders
you want to exclude in a project directory.
function array_preg_diff($a, $p) {
foreach ($a as $i => $v)
if (preg_match($p, $v))
unset($a[$i]);
return $a;
}
$relevantFiles = array_preg_diff(scandir('somedir'), '/^\./');
instead of
$relevantFiles = array_diff(scandir('somedir'), array('.', '..', '.idea',
'.project));
===============================================================================
I just came upon a really good use for array_diff(). When reading a dir
(opendir;readdir), I _rarely_ want "." or ".." to be in the array of files I'm
creating. Here's a simple way to remove them:
S
===============================================================================
If you just need to know if two arrays' values are exactly the same (regardless
of keys and order), then instead of using array_diff, this is a simple method:
"red" , "y" => "green" , "z" => "blue" );
identical_values( $array1 , $array2 ); // true
identical_values( $array1 , $array3 ); // false
identical_values( $array1 , $array4 ); // false
identical_values( $array1 , $array5 ); // true
?>
The function returns true only if the two arrays contain the same number of
values and each value in one array has an exact duplicate in the other array.
Everything else will return false.
my alternative method for evaluating if two arrays contain (all) identical
values:
may be slightly faster (10-20%) than this array_diff method:
but only when the two arrays contain the same number of values and then only in
some cases. Otherwise the latter method will be radically faster due to the use
of a count() test before the array_diff().
Also, if the two arrays contain a different number of values, then which method
is faster will depend on whether both arrays need to be sorted or not. Two
times sort() is a bit slower than one time array_diff(), but if one of the
arrays have already been sorted, then you only have to sort the other array and
this will be almost twice as fast as array_diff().
Basically: 2 x sort() is slower than 1 x array_diff() is slower than 1 x sort
().
===============================================================================
If the element number returned is 0, this function NOT return a valid array,
return NULL.
===============================================================================
array_diff provides a handy way of deleting array elements by their value,
without having to unset it by key, through a lengthy foreach loop and then
having to rekey the array.
===============================================================================
just comment ... i don't know whether the following implementation of
array_diff is having a much better meaning to the function name.
function ary_diff( $ary_1, $ary_2 ) {
// compare the value of 2 array
// get differences that in ary_1 but not in ary_2
// get difference that in ary_2 but not in ary_1
// return the unique difference between value of 2 array
$diff = array();
// get differences that in ary_1 but not in ary_2
foreach ( $ary_1 as $v1 ) {
$flag = 0;
foreach ( $ary_2 as $v2 ) {
$flag |= ( $v1 == $v2 );
if ( $flag ) break;
}
if ( !$flag ) array_push( $diff, $v1 );
}
// get difference that in ary_2 but not in ary_1
foreach ( $ary_2 as $v2 ) {
$flag = 0;
foreach ( $ary_1 as $v1 ) {
$flag |= ( $v1 == $v2 );
if ( $flag ) break;
}
if ( !$flag && !in_array( $v2, $diff ) ) array_push( $diff, $v2 );
}
return $diff;
}
i think array_diff should return the difference between the array independent
of the order of passing the parameter.
===============================================================================
Here's a little wrapper for array_diff - I found myself needing to iterate
through the edited array, and I didn't need to original keys for anything.
===============================================================================
$val)
foreach ($aSubtrahends as $aSubtrahend)
if (array_key_exists($key, $aSubtrahend))
unset ($ar1[$key]);
return $ar1;
}
$a = array("c" => "catty", "b" => "batty", "a" => "aunty", 5 => 4, 2.9 => 7, 11
, "n" => "nutty");
$b = array(9, "d" => "ditty", "b" => "bratty", "a" => null, 10, 13);
$c = array_key_diff ($a, $b, array(5 => 6));
?>
$c is then equivalent to array('c' => 'catty', 6 => 11, 'n' => 'nutty')
Csaba Gabor from New York
===============================================================================
Hi!
I tried hard to find a solution to a problem I'm going to explain here, and
after have read all the array functions and possibilities, I had to create what
I think should exist on next PHP releases.
What I needed, it's some kind of Difference, but working with two arrays and
modifying them at time, not returning an array as a result with the diference
itself.
So, as an example:
A = 1,2,3
B = 2,3,4
should NOT be:
C = 1,4
but:
A = 1
B = 4
so basically, I wanted to delete coincidences on both arrays.
Now, I've some actions to do, and I know wich one I've to do with the values
from one array or another.
With the normal DIFF I can't, because if I've an array like C=1,4, I dont know
if I've to do the Action_A with 1 or with 4, but I really know that everything
in A, will go to the Action_A and everithing in B, will go to Action_B. So same
happens with 4, don't know wich action to apply...
So I created this:
This cute, works by reference, and modifies the arrays deleting coincidences on
both, and leaving intact the non coincidences.
So a call to this will be somethin' like:
And HERE, I'll have my arrays as I wanted:
$original = 1
$new = 4
Now, why I use it precisely?
Imagine you've some "Events" and some users you select when create the event,
can "see" this event you create. So you "share" the event with some users. Ok?
Imagine you created and Event_A, and shared with users 1,2,3.
Now you want to modify the event, and you decide to modify the users to share
it. Imagine you change it to users 2,3,4.
(numbers are users ID).
So you can manage when you are going to modify, to have an array with the IDs
in DDBB ($original), and then, have another array with ID's corresponding to
the users to share after modifying ($new). Wich ones you've to DELETE from
DDBB, and wich ones do you've to INSERT?
If you do a simple difference or somehow, you get somethin' like C=1,4.
You have no clue on wich one you've to insert or delete.
But on this way, you can know it, and that's why:
- What keeps on $original, it's somethin not existing in $new at the beggining.
So you know that all what you've inside $original, have to be deleted from DDBB
because what you did in the modifying process, it's to unselect those users
keeping in $original.
- What keeps on $new, it's something not existing in $original at the
beggining. Wich means that in the modifying process you added some new users.
And those have to be inserted in DDBB. So, everything keeping inside $new, have
to be inserted in the DDBB.
Conclusion:
- Remaining in $original --> delete from DB.
- Remaining in $new --> insert into DB.
And that's all!
I hope you find it useful, and I encourage PHP "makers", to add in a not
distant future, somethin' like this one natively, because I'm shure that I'm
not the first one needing something like this.
Best regards all,
Light.
===============================================================================
The fact that it will use the string representation causes alot of problems
with php 5.4.
When you will have an array inside your elements, it will throw a notice error.
It will throw huge amounts of notices depending on how many items you have.
The same problem you will notice when checking with objects inside your array.
It will cause catchable fatal errors.
This is also the case in php 5.3
I'm going to send a bug report, because I think php should handle this.
===============================================================================
There is more fast implementation of array_diff, but with some limitations. If
you need compare two arrays of integers or strings you can use such function:
public static function arrayDiffEmulation($arrayFrom, $arrayAgainst)
{
$arrayAgainst = array_flip($arrayAgainst);
foreach ($arrayFrom as $key => $value) {
if(isset($arrayAgainst[$value])) {
unset($arrayFrom[$key]);
}
}
return $arrayFrom;
}
It is ~10x faster than array_diff
php > $t = microtime(true);$a = range(0,25000); $b = range(15000,500000); $c =
array_diff($a, $b);echo microtime(true) - $t;
4.4335179328918
php > $t = microtime(true);$a = range(0,25000); $b = range(15000,500000); $c =
arrayDiffEmulation($a, $b);echo microtime(true) - $t;
0.37219095230103
===============================================================================
Hi, I´d like to give a piece of advice to all who need to use this function to
compare two arrays that have a great quantity of elements. You should sort both
arrays first before comparing, it will work faster.
Thanks
===============================================================================
The description is wrong, array_diff() returns an array consisting of all
elements in $array1 that are not in $array2. The example shows this.
Thats how it works on my php anyway.
===============================================================================
Hello guys,
I´ve been looking for a array_diff that works with recursive arrays, I´ve tried
the ottodenn at gmail dot com function but to my case it doesn´t worked as
expected, so I made my own. I´ve haven´t tested this extensively, but I´ll
explain my scenario, and this works great at that case :D
We got 2 arrays like these:
1, 'orange' => 1, 'pasta' => 1);
$aArray1['kenji'] = array('apple' => 1, 'pie' => 1, 'pasta' => 1);
$aArray2['marcie'] = array('banana' => 1, 'orange' => 1);
?>
As array_diff, this function returns all the items that is in aArray1 and IS
NOT at aArray2, so the result we should expect is:
1);
$aDiff['kenji'] = array('apple' => 1, 'pie' => 1, 'pasta' => 1);
?>
Ok, now some comments about this function:
- Different from the PHP array_diff, this function DON´T uses the === operator,
but the ==, so 0 is equal to '0' or false, but this can be changed with no
impacts.
- This function checks the keys of the arrays, array_diff only compares the
values.
I realy hopes that this could help some1 as I´ve been helped a lot with some
users experiences. (Just please double check if it would work for your case, as
I sad I just tested to a scenario like the one I exposed)
$mValue) {
if (array_key_exists($mKey, $aArray2)) {
if (is_array($mValue)) {
$aRecursiveDiff = arrayRecursiveDiff($mValue, $aArray2[$mKey]);
if (count($aRecursiveDiff)) { $aReturn[$mKey] = $aRecursiveDiff
; }
} else {
if ($mValue != $aArray2[$mKey]) {
$aReturn[$mKey] = $mValue;
}
}
} else {
$aReturn[$mKey] = $mValue;
}
}
return $aReturn;
}
?>
===============================================================================
Until recently, the description said:
"array_diff() returns an array containing all the values of array1 that are not
present in any of the other arguments. Note that keys are preserved."
Now it says:
"Compares array1 against array2 and returns the difference."
Now it's not clear what the optional arguments after the first two do. Also,
the difference is not symmetric in its arguments (that is array_intersect).
===============================================================================
An earlier comment suggested using array_merge() to reindex the array. While
this will work, array_values() is about 30-40% faster and accomplishes the same
task.
===============================================================================
Even tough the description of this function's behavior has changed it
does not appear as tough the function's behavior has changed. Below is some
test code and its output:
Array
(
[2] => 3
[3] => 4
[4] => 5
)
===============================================================================
Here is a few functions to do a fast diff between two arrays in a few lines.
You can use it with other functions described in the function array_merge :
array_merge_replace from an other user, and two functions using it :
array_merge_diff and array_merge_diff_reverse.
Note that the keys are preserved!
// returns a two dimensions array with the deleted data
// and the added data
function array_diff_both($new,$old)
{
$del=array_diff_assoc($old,$new);
$add=array_diff_assoc($new,$old);
return $diff=array("del"=>$del, "add"=>$add);
}
// returns a two dimensions array with the equal data,
// deleted data and the added data
function array_diff_all($arr_new,$arr_old)
{
$arr_equ=array_intersect_assoc($arr_new,$arr_old);
$arr_del=array_diff_assoc($arr_old,$arr_new);
$arr_add=array_diff_assoc($arr_new,$arr_old);
return $diff=array("equ"=>$arr_equ, "del"=>$arr_del, "add"=>$arr_add);
}
?>
===============================================================================
Here is some code to take the difference of two arrays. It allows custom
modifications like prefixing with a certain string (as shown) or custom compare
functions.
$maxa ) {
// done; rest of $used isn't in $all
break;
}
if( $u > $maxu ) {
// rest of $all is unused
for( ; $a <= $maxa; $a++ ) {
$unused[] = $all[$a];
}
break;
}
if( $prefix_all.$all[$a] > $prefix_used.$used[$u] ) {
// $used[$u] isn't in $all?
$u++;
continue;
}
if( $prefix_all.$all[$a] == $prefix_used.$used[$u] ) {
// $all[$a] is used
$a++;
$u++;
continue;
}
$unused[] = $all[$a];
$a++;
}
return $unused;
}
?>
===============================================================================
Undocumented return: it appears this will return NULL if an error occurs
(e.g., an argument is not an array) and is not caught.
@array_diff(NULL, array(1));
@array_diff(array(1), NULL);
@array_diff();
?>
All return NULL. (Note the "@")
===============================================================================
A simple multidimentional key aware array_diff function.
$v){
unset($dv);
if(is_int($k)){
// Compare values
if(array_search($v,$a2)===false) $dv=$v;
else if(is_array($v)) $dv=arr_diff($v,$a2[$k]);
if($dv) $diff[]=$dv;
}else{
// Compare noninteger keys
if(!$a2[$k]) $dv=$v;
else if(is_array($v)) $dv=arr_diff($v,$a2[$k]);
if($dv) $diff[$k]=$dv;
}
}
return $diff;
}
?>
This function meets my immidiate needs but I'm shure it can be improved.
===============================================================================
Based on one lad's code, I created following function for creating something
like HTML diff. I hope it will be useful.
' . $del [$i] . '
' . $equ [$i] . '
'; } if (isset ($ins [$i])) { $out .= '' . $ins [$i] . '
'; } } return $out; } ?> =============================================================================== From the page: Note: Please note that this function only checks one dimension of a n-dimensional array. Of course you can check deeper dimensions by using array_diff($array1[0], $array2[0]); I've found a way to bypass that. I had 2 arrays made of arrays. I wanted to extract from the first array all the arrays not found in the second array. So I used the serialize() function: =============================================================================== Multidimensional array_diff '; $bdd['80395']= array('80396','80397','80398','777'); $folder['80395']= array('80396','80397','666','80398','154223'); $folder['80397']= array('34','35','36','45','57'); echo '"; print_r(array_idiff($arr1,$arr2)); =============================================================================== This is my simple function do compare two arrays. It adds the deleted values from the original array. $l){ if($old_array[$i] != $l){ $r[$i]=$l; } } //adding deleted values foreach($old_array as $i=>$l){ if(!$new_array[$i]){ $r[$i]=""; } } return $r; } ?> =============================================================================== To: effectpenguin at antarctida dot ru Re: interesting effect $v) {if ($k != "GLOBALS") {$target[$k] = $v;}} } arraycpy($old,$GLOBALS); // some actions with variables: $homer = "beer"; arraycpy($new,$GLOBALS); $diff = array_diff($new,$old); var_dump($diff); ?> array(1) { ["homer"]=> string(4) "beer" } Windows NT WPX_NB 5.1 build 2600 PHP/5.0.4 =============================================================================== Suppose you have a CMS which saves a list of phone numbers for each user. They are stored like this: $phones['Home'] = '(555)555-1234'; $phones['Office'] = '(555)555-2222'; You only want to save to the database if the list of items has changed. Including if the ORDER of them has changed. =============================================================================== With previous solutions handling multi-dimensional arrays or objects through serialization, if compared variables contain references at some point, these will be serialized and stand as such after the diff function. Here is a safer solution : $val1) { if (array_search($val1, $ar2) === false) { $diff[$key] = $val1; } } return $diff; } ?> Example: Array(2,3)) //And $referenced stands unchanged (not serialized) ?> =============================================================================== array_diff does not have buggy behavior as described above. The problem stems from calling array_diff() each time in the loop, therefore regererating a new array with an index always at the beginning EVERY time, so each will always pick the first entry. This is not buggy, but in fact what you've told the program to do :) The solution is not as much a solution, but properly instructing the program what to do! Cheers! TheoDiggers =============================================================================== //array_diff function compare first array against all of the array and return the elements with index that are not present in either of the array. "green", "red", "c"=>"blue", "red","cyan",2,3,"white"); $array2 = array("b" => "green", "yellow", "red"); $array3 = array("b" => "green", "yellow", "white",4); $array4 = array("b" => "green", "yellow", "blue",2); $result = array_diff($array1, $array2,$array3,$array4); echo ""; print_r($result); ?> //outputs Array ( [3] => cyan [5] => 3 ) =============================================================================== Are you looking for a function which returns an edit script (a set of insert and delete instructions on how to change one array into another)? At least, that's what I hoped to find here, so here's some code based on http:// www.cs.arizona.edu/people/gene/PAPERS/diff.ps : 0) { $res[0]=array_merge($res[0],array_slice($a2,$y,$l)); $res[1]=array_merge($res[1],array_fill(0,$l,"b")); } } else { $res=diff_rek($a1,$a2,$D-1,$k-1,$vbck); array_push($res[0],$a1[$x-1]); array_push($res[1],"1"); if ($l>0) { $res[0]=array_merge($res[0],array_slice($a1,$x,$l)); $res[1]=array_merge($res[1],array_fill(0,$l,"b")); } } return $res; } function arr_diff(&$a1,&$a2) { $max=70; $c1=count($a1); $c2=count($a2); $v[1]=0; for ($D=0; $D<=$max; $D++) { for ($k=-$D; $k<=$D; $k=$k+2) { if (($k==-$D) || ($k!=$D && $v[$k-1]<$v[$k+1])) $x=$v[$k+1]; else $x=$v[$k-1]+1; $y=$x-$k; while (($x<$c1)&&($y<$c2)&&($a1[$x]==$a2[$y])) { $x++; $y++; } $v[$k]=$x; if (($x>=$c1)&&($y>=$c2)) { $vbck[$D]=$v; return diff_rek($a1,$a2,$D,$c1-$c2,$vbck); }; } $vbck[$D]=$v; }; return -1; } ?> This works on arrays of all elements for which the operator "==" is defined. arr_dif($a1,$a2) returns an array of two arrays: $result[0] = array of elements from $a1 and $a2 $result[1] = array of chars - one for each element from $result[0]: "1" : The corresponding element is from $a1 "2" : The corresponding element is from $a2 "b" : The correspondig element is from both source arrays The function returns -1, when the number of different elements is greater than $max Example: $a1=array("hello","world"); $a2=array("good","bye","world"); => arr_diff($a1,$a2) = array(array("hello","good","bye","world"), array ("1","2","2","b")); =============================================================================== Please note that array_diff cannot compare with an undefined array. For example: will output NULL NULL. If your script causes an undefined array (like mine did) it can be hard to find the mistake. Greetings =============================================================================== be careful kids, this function can be tricky "a"); $tab2=array(0=>"a",1=>"b"); print_r(array_diff($tab1,$tab2)); ?> gives Array ( )