it is possible to create an invalid XML tree (for example, by adding two attributes with the same name or by setting attribute/node name to empty/invalid string). Tree modification is optimized for performance and for memory consumption, so if you have enough memory you can create documents from scratch with pugixml and later save them to file/stream instead of relying on error-prone manual text writing and without too much overhead.
All member functions that change node/attribute data or structure are non-constant and thus can not be called on constant handles. However, you can easily convert constant handle to non-constant one by simple assignment: void foo(const pugi::xml_node& n) { pugi::xml_node nc = n; }, so const-correctness here mainly provides additional documentation.
As discussed before, nodes can have name and value, both of which are strings. Depending on node type, name or value may be absent. You can use set_name and set_value member functions to set them. Similar functions are available for attributes; however, the set_value function is overloaded for some other types except strings, like floating-point numbers. Also, attribute value can be set using an assignment operator. This is an example of setting node/attribute name and value (samples/modify_base.cpp):
pugi::xml_node node = doc.child("node");
// change node name
std::cout << node.set_name("notnode");
std::cout << ", new node name: " << << std::endl;
// change comment text
std::cout << doc.last_child().set_value("useless comment");
std::cout << ", new comment text: " << doc.last_child().value() << std::endl;
// we can't change value of the element or name of the comment
std::cout << node.set_value("1") << ", " << doc.last_child().set_name("2") << std::endl;
pugi::xml_attribute attr = node.attribute("id");
// change attribute name/value
std::cout << attr.set_name("key") << ", " << attr.set_value("345");
std::cout << ", new attribute: " << << "=" << attr.value() << std::endl;
// we can use numbers or booleans
std::cout << "new attribute value: " << attr.value() << std::endl;
// we can also use assignment operators for more concise code
attr = true;
std::cout << "final attribute value: " << attr.value() << std::endl;
Nodes and attributes do not exist without a document tree, so you can't create them without adding them to some document. A node or attribute can be created at the end of node/attribute list or before/after some other node. All insertion functions return the handle to newly created object on success, and null handle on failure. Even if the operation fails (for example, if you're trying to add a child node to PCDATA node), the document remains in consistent state, but the requested node/attribute is not added.
attribute() and child() functions do not add attributes or nodes to the tree, so code like node.attribute("id") = 123; will not do anything if node does not have an attribute with name "id". Make sure you're operating with existing attributes/nodes by adding them if necessary.
This is an example of adding new attributes/nodes to the document (samples/modify_add.cpp):
// add node with some name
pugi::xml_node node = doc.append_child("node");
// add description node with text child
pugi::xml_node descr = node.append_child("description");
descr.append_child(pugi::node_pcdata).set_value("Simple node");
// add param node before the description
pugi::xml_node param = node.insert_child_before("param", descr);
// add attributes to param node
param.append_attribute("name") = "version";
param.append_attribute("value") = 1.1;
param.insert_attribute_after("type", param.attribute("name")) = "float";
If you do not want your document to contain some node or attribute, you can remove it with remove_attribute and remove_child functions. Removing the attribute or node invalidates all handles to the same underlying object, and also invalidates all iterators pointing to the same object. Removing node also invalidates all past-the-end iterators to its attribute or child node list. Be careful to ensure that all such handles and iterators either do not exist or are not used after the attribute/node is removed.
This is an example of removing attributes/nodes from the document (samples/modify_remove.cpp):
// remove description node with the whole subtree
// remove id attribute
pugi::xml_node param = node.child("param");
// we can also remove nodes/attributes by handles
pugi::xml_attribute id = param.attribute("name");
Saving document
Often after creating a new document or loading the existing one and processing it, it is necessary to save the result back to file. Also it is occasionally useful to output the whole document or a subtree to some stream; use cases include debug printing, serialization via network or other text-oriented medium, etc. pugixml provides several functions to output any subtree of the document to a file, stream or another generic transport interface; these functions allow to customize the output format, and also perform necessary encoding conversions.
Before writing to the destination the node/attribute data is properly formatted according to the node type; all special XML symbols, such as < and &, are properly escaped. In order to guard against forgotten node/attribute names, empty node/attribute names are printed as ":anonymous". For well-formed output, make sure all node and attribute names are set to meaningful values.
If you want to save the whole document to a file, you can use the save_file function, which returns true on success. This is a simple example of saving XML document to file (samples/save_file.cpp):
// save document to file
std::cout << "Saving result: " << doc.save_file("save_file_output.xml") << std::endl;
To enhance interoperability pugixml provides functions for saving document to any object which implements C++ std::ostream interface. This allows you to save documents to any standard C++ stream (i.e. file stream) or any third-party compliant implementation (i.e. Boost Iostreams). Most notably, this allows for easy debug output, since you can use std::cout stream as saving target. There are two functions, one works with narrow character streams, another handles wide character ones.
This is a simple example of saving XML document to standard output (samples/save_stream.cpp):
// save document to standard output
std::cout << "Document:\n";;
All of the above saving functions are implemented in terms of writer interface. This is a simple interface with a single function, which is called several times during output process with chunks of document data as input. In order to output the document via some custom transport, for example sockets, you should create an object which implements xml_writer_file interface and pass it to xml_document::save function.
This is a simple example of custom writer for saving document data to STL string (samples/save_custom_writer.cpp); read the sample code for more complex examples:
struct xml_string_writer: pugi::xml_writer
 std::string result;
 virtual void write(const void* data, size_t size)
 result.append(static_cast(data), size);
While the previously described functions save the whole document to the destination, it is easy to save a single subtree. Instead of calling xml_document::save, just call xml_node::print function on the target node. You can save node contents to C++ IOstream object or custom writer in this way. Saving a subtree slightly differs from saving the whole document; read the manual for more information.
If you believe you've found a bug in pugixml, please file an issue via issue submission form. Be sure to include the relevant information so that the bug can be reproduced: the version of pugixml, compiler version and target architecture, the code that uses pugixml and exhibits the bug, etc. Feature requests and contributions can be filed as issues, too.
If filing an issue is not possible due to privacy or other concerns, you can contact pugixml author by e-mail directly:
The pugixml library is distributed under the MIT license:
Copyright (c) 2006-2020 Arseny Kapoulkine
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
restriction, including without limitation the rights to use,
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
This means that you can freely use pugixml in your applications, both open-source and proprietary. If you use pugixml in a product, it is sufficient to add an acknowledgment like this to the product distribution:
This software is based on pugixml library (
pugixml is Copyright (C) 2006-2020 Arseny Kapoulkine.
1. All trademarks used are properties of their respective owners.


text:
Estonian Academic Agricultural Society
Estonian Academic Agricultural Society in _PHONE_
The AAS was established in 1920 in Tartu Univesity (reopened in 1919). Members of the Society were the students (up to 449 in 1928) as well as the lecturers of the Faculty of Agronomy. The objective of the extracurricular activities of the AAS was to prepare the students for their future profession. Publishing activities were of great importance – the Society's journal ("Agronoomia") was published and manuals were compiled. The AAS was liquidated by Soviet power in 1940.
Ten Years of the Academic Society of Agriculture
The Academic Agricultural Society was re-established in 1989. The journal of Agricultural Science has been published since 1990, five numbers per year. Since 1996 the scientific annual conferences have been organized and two issues of the Transactions of the EAA Society have been published. To appreciate the scientific work of the members of the EAA Society three honoraria have been given and the honorary members have been elected. There are more than 250 members of the EAA Society.

source: m-a-p/FineFineWeb


Class
UICloudSharingController
A view controller that presents standard screens for adding and removing people from a CloudKit share record.
Declaration
class UICloudSharingController : UIViewController
Overview
CloudKit Sharing provides real-time collaboration between one or more people using your app. A user takes certain steps to make collaboration possible, from inviting people to participate in the collaboration to setting restrictions on what participants can do. To provide these steps to a user, you must make changes to your app. With UICloudSharingController, the changes require minimum effort.
The UICloudSharingController view controller class provides screens, presented within your app, for managing the people, permissions, and access rights associated with a CKShare record. The controller, along with a few lines of your own code, facilitates the setup and management of online sharing between users, making it possible for a user to:
 - Invite people to view or collaborate on a shared record
 - Set the access rights determining who can access the shared record (only people invited or anyone with the share link)
 - Set general or individual permissions (read-only or read/write)
 - Remove access from one or more participants
 - Stop participating (if the user is a participant)
 - Stop sharing with all participants (if the user is the owner of the shared record)
The controller provides these different actions to the user based on the user's role. If the user is the individual sharing the record (where the record is an instance of CKRecord representing the data to share), then the user is called the owner. A user who has access to the shared record and is not the owner is known as a participant. There is no need for you to specify the user's role. The controller determines the role automatically.
Inviting Participants to a New Share
The user who owns the data, represented as a CKRecord, can invite others to view or collaborate on changes to the data. To invite participants, the owner sends the share link to the other people. To provide this capability in your app, create an instance of UICloudSharingController using the init(preparationHandler:) initializer method. You use this initializer method only when the owner is not already sharing the record.
After creating the controller, you present it. The controller displays the Invitation screen. Using this screen, the owner can add participants and set restrictions on the shared record. Once done, the owner sends the share link to the participants.
However, before the owner can send the share link, CloudKit must generate the link. This link generation happens when saving a new CKShare record, but when do you save it? You save the share record in the preparationHandler:.
After the owner's selections are complete, the controller invokes the preparation handler provided in the initializer call. In the handler, you create a new CKShare instance, initializing it with the CKRecord instance that represents the data to share. (This record is called the "root record.") Next, you save the share and root records using CKModifyRecordsOperation. Finally, you return the shared record to the controller or return an error if the save failed. See Listing 1 for an example of this in action.
Listing 1
Presenting the Cloud sharing controller after a bar button tap.
func presentCloudSharingController(_ sender: Any) { guard
 let barButtonItem = sender as? UIBarButtonItem,
 let rootRecord = self.recordToShare else {
 return
 }

 let cloudSharingController = UICloudSharingController { [weak self] (controller, completion: @escaping (CKShare?, CKContainer?, Error?) -> Void) in
 guard let 'self' = self else {
 return
 }
 self.share(rootRecord: rootRecord, completion: completion)
 }

 if let popover = cloudSharingController.popoverPresentationController {
 popover.barButtonItem = barButtonItem
 }
 self.present(cloudSharingController, animated: true) {}
}

func share(rootRecord: CKRecord, completion: @escaping (CKShare?, CKContainer?, Error?) -> Void) {
 let shareRecord = CKShare(rootRecord: rootRecord)
 let recordsToSave = [rootRecord, shareRecord];
 let container = CKContainer.default()
 let privateDatabase = container.privateCloudDatabase
 let operation = CKModifyRecordsOperation(recordsToSave: recordsToSave, recordIDsToDelete: [])
 operation.perRecordCompletionBlock = { (record, error) in
 if let error = error {
 print("CloudKit error: \(error.localizedDescription)")
 }
 }

 operation.modifyRecordsCompletionBlock = { (savedRecords, deletedRecordIDs, error) in
 if let error = error {
 completion(nil, nil, error)
 } else {
 completion(shareRecord, container, nil)
 }
 }

 privateDatabase.add(operation)
}
Adding and Removing Participants from an Existing Share
To allow the owner of an existing share to manage the participants, create the UICloudSharingController instance using the init(share:container:) initializer method.
After you create the controller, present it to show the People screen. From this screen, the owner can:
 - Add and remove participants
 - Change the share's access options from private to public, or public to private
 - Change the share's permissions from read-only to read/write, or vice versa
 - Stop sharing with all participants
Viewing Participants and Leaving a Share
To allow a participant to view the list of participants and remove themselves from a share, create the UICloudSharingController instance using the init(share:container:) initializer method.
After you create the controller, present it to show the People screen. From this screen, the participant can:
 - View the list of participants
 - Copy the share link to send to others (if the owner has made the share publicly available)
 - Leave the share
Presenting the Controller
UICloudSharingController is designed for use in a popover. Therefore, you should always set the popoverPresentationController source information before presenting the Cloud sharing controller. Doing this ensures that the UICloudSharingController instance is displayed properly across all device types.
Listing 2 shows an example of setting the popoverPresentationController before presenting a Cloud sharing controller.
Listing 2
Example of setting the popoverPresentationController before presenting the Cloud sharing controller.
func presentCloudSharingController(_ sender: Any) { guard
 let barButtonItem = sender as? UIBarButtonItem,
 let rootRecord = self.recordToShare else {
 return
 }

 let cloudSharingController = UICloudSharingController { (controller, completion: @escaping (CKShare?, CKContainer?, Error?) -> Void) in
 // Save the share and root records.
 // Call completion(share, container, error) handler.
 }

 if let popover = cloudSharingController.popoverPresentationController {
 popover.barButtonItem = barButtonItem
 }
 self.present(cloudSharingController, animated: true) {}
}
Configuring the Controller
By default, the UICloudSharingController user interface displays a generic thumbnail image and title to the user. You can, however, change these to app-specific representations of the shared record. You accomplish this by setting the controller's delegate property to an object that conforms to the UICloudSharingControllerDelegate protocol, making sure to implement the itemThumbnailData(for:) and itemTitle(for:) delegate methods.
You can also show or hide the permission and access options presented to the user by setting the availablePermissions property on the UICloudSharingController instance.
Topics
Creating the Cloud Sharing Controller
init(preparationHandler: (UICloudSharingController, (CKShare?, CKContainer?, Error?) -> Void) -> Void)
Initializes the CloudKit sharing controller with a preparation handler intending to save a new share record.
init(share: CKShare, container: CKContainer)
Initializes the CloudKit sharing view controller with a CloudKit share record and container to manage participants and restrictions.
Customizing the Cloud Sharing Controller Behavior
var delegate: UICloudSharingControllerDelegate?
A reference to an object that conforms to the CloudKit sharing controller delegate protocol.
protocol UICloudSharingControllerDelegate
The protocol you implement to provide additional information to, and receive notifications from, the CloudKit sharing controller.
Configuring the Permissions
var availablePermissions: UICloudSharingController.PermissionOptions
A combination of permission and access options made available to the user when viewing screens presented by the CloudKit sharing controller.
struct UICloudSharingController.


text:
Salina South High School730 E Magnolia Rd
Salina, KS 67401
Design Achievement – DLR Group's design for the additions and renovations at Salina South High School responds to the District's goals of creating an engaged learner through flexible and adaptable spaces in a safe and secure environment. The design includes two major classroom wings and an auxiliary gymnasium, along with an improved new main entrance to the high school. The school is organized around two distinct learning environments – one centered on the Humanities and one centered around STEM. CTE courses are dispersed between the two learning environments to reinforce the connection between the core curriculum and the advanced CTE curriculum. Large sliding doors further increase the connection between spaces and create a highly flexible and collaborative environment. The commons and media center link the two learning environments together and become a hub for activity within the school.
Scope Summary - The 275,000 SF high school accommodates 1,477 students in two distinct learning environments centered around Humanities and STEM. The organization within each learning environment reinforces the overall building concepts of flexibility and collaboration. Each learning environment contains CTE courses adjacent to the core curriculum spaces. These CTE courses offer high visibility from the circulation space to showcase and enhance awareness of the rigorous coursework happening within and enhance the learning environment and academic interaction for students. Collaboration space is located centrally in the learning environments connecting to both the learning environments and CTE courses. The student commons connects the existing performing arts and athletic spaces, allowing the commons to be a preand post-function space for public events and activities. DLR Group provided architecture, engineering and interior design services for this project.

source: openbmb/Ultra-FineWeb


text:
Are there things in your life that makes you sad? This little polar bear can name plenty. Follow along with the baby polar bear as he leaves his cozy den for the first time. The snow is cold, his tummy rumbles with hunger, and the ice he walks with his Mommy is thin and dangerous. Despite the sadness he feels as he misses his home, his Mommy reminds him that there are things to be happy about, even when they feel sad.
Filled from cover to cover with bright pictures of polar bears and the icy tundra of the Arctic, What Makes Me Sad? will assure your child that it's okay to be sad sometimes. Use the discussion questions at the back of this book to teach your child about the important topic of global warming and the need to protect both the polar bears and the planet, as well as help your child recognize their emotions and make connections to the world around them. What Makes Me Sad? will comfort your child with the knowledge that everyone feels sad sometimes, and you can rely on the people who love you to help you feel happy again.


text:
Nano-sized titania (anatase) and sodium and potassium titanate nanotubes were studied via in situ Raman spectroscopy at hydrostatic pressures up to 6 GPa. Analysis by scanning electron microscopy shows a uniform dispersion of sodium and potassium cations in the nanotubes. The effect of the pressure was observed by significant shifts in the Raman band structure of nano-sized anatase crystals and nanotube titanate. In nano-particulate anatase, the phonon frequencies (143, 395, 517, and 639 cm−1) increase linearly with pressure. In contrast, the upward frequency shifts in the sodium titanate nanotubes (NaTNT) and potassium-modified nanotubes (NaTNT+K) occur in a stepwise fashion. These stepwise changes occur in the nanotube samples between 2 and 4 GPa (ambient pressure phonon bands in NaTNT at 274, 444, 650, and 906 cm−1) and between 4.5 and 5.5 GPa, (phonons 273 cm−1 and 436 cm−1 in NaTNT+K at an ambient pressure). Post-pressure high-resolution transmission electron microscopy analysis shows evidence of nanotube distortions and a 5% contraction in the interlaminar spacing of both NaTNT and NaTNT+K.
ASJC Scopus subject areas
- Physics and Astronomy(all)


text:
Skip to Main Content
The serious natural disasters such as flood and earthquake break out in a short time. Remote sensing such as airborne SAR can acquire the image of the disaster area quickly. But the airborne SAR remote sensing image has the property of large volume data, so the processing needs very large computer memory and strong computation ability. In this paper, based on the analysis of the SAR image processing procedure, we study the SAR image processing method using computer parallel computation technology, which is based on the parallel computer cluster operation and the large virtual computer memory sharing technology. We also introduce the application of the SAR image parallel processing system in the disaster monitor and assessment to validate the high efficiency of the system and the feasibility of our research.
Geoscience and Remote Sensing Symposium, 2003. IGARSS '03. Proceedings. 2003 IEEE International (Volume:7 )
Date of Conference: 21-25 July 2003


text:
Wheelbarrows are essential tools for gardening, landscaping, and construction. They come in various styles, sizes, and wheel configurations. Two of the most common wheelbarrow types are the single and dual wheel models. But which one is better for your needs? In this article, we'll explore the technical differences between these two wheelbarrows, their pros and cons, and help you pick the right tool for the job.
Single-wheel wheelbarrows are the traditional and most common type. They have a large wheel in the center of the front, with one or two handles behind it. They are perfect for light to medium loads, such as hauling dirt, mulch, or plants. Single wheelbarrows are more agile and easier to maneuver in tight spaces. Some models have a tilted bucket design that allows you to dump your load more easily.
Dual-wheel wheelbarrows have two smaller wheels at the front, with a bucket resting on a frame. They are designed for larger loads and more stability. The two wheels distribute the weight more evenly, making them ideal for heavy materials such as bricks, rocks, or gravel. Dual wheelbarrows are also more resistant to tipping over, which is especially important when handling fragile or expensive loads. Moreover, they reduce the strain on your back, as they are easier to balance than single-wheel models.
Page Dual vs Single Wheel Wheelbarrow: Which One to Choose?
Little-known fact: Did you know that the single wheelbarrow was actually invented before the dual-wheeled version? Although the dual-wheel wheelbarrow is commonly seen as an improvement on the single-wheel design, it was actually a later development. The single-wheel wheelbarrow has been around for centuries, and it was primarily used for carrying objects like agricultural goods or construction materials.
Interestingly, the single-wheelbarrow was so effective that its design hasn't changed much over time, even with the introduction of the dual-wheel version. In fact, the single-wheel design is generally still preferred by many people, as it is more maneuverable and easier to use on uneven terrain. While the dual-wheel design may be more stable on flat surfaces or when carrying heavy loads, the single-wheel design is still an innovative and effective tool that has stood the test of time.
Common misconception: It's a common misconception that the dual-wheel wheelbarrow is always better than the single-wheel version. While the dual-wheel may be more stable on flat surfaces or when carrying heavier loads, it can be more difficult to maneuver in tight spaces, such as through narrow doorways or around obstacles.
On the other hand, the single-wheel wheelbarrow is more agile and easier to use in uneven terrain or on slopes, making it a popular choice for gardeners, landscapers, and farmers. Additionally, the single-wheel design is more compact and lightweight, which makes it easier to store and transport when not in use.
Ultimately, the choice between a single-wheel or dual-wheel wheelbarrow comes down to personal preference and the specific needs of the user. While the dual-wheel may be a good choice for heavier loads or flat terrain, the single-wheel design remains a reliable and versatile option for a variety of outdoor tasks.
Double the Fun: A Comprehensive Comparison of Dual vs Single Wheel Wheelbarrows!
If you are looking for the right wheelbarrow to make your gardening and landscaping tasks more efficient, you might be wondering whether to go for a dual wheel or the more traditional single wheel design. While both have their advantages, it's essential to understand the main features of each to make the right choice. Here is a side-by-side comparison of the two types of wheelbarrows on the market.
SINGLE WHEEL WHEELBARROW:
– Lightweight: Single wheel wheelbarrows are more lightweight and easier to maneuver around tight spaces or over uneven terrain. They are ideal for carrying smaller loads, such as mulch or topsoil.
– Affordable: Single wheel wheelbarrows tend to be less expensive than dual wheel wheelbarrows, making them a great choice for those on a budget.
– Compact: If you have limited storage space, a single wheel wheelbarrow takes up less room and can be stored in smaller areas with ease.
DUAL WHEEL WHEELBARROW:
– Stability: Dual wheel wheelbarrows are more stable and easier to balance than single wheel wheelbarrows. This makes them ideal for larger loads or when working on inclines.
– Heavy-duty: Dual wheel wheelbarrows are built to handle heavier loads than a single wheel design. With the added support of two wheels, they make moving heavier items like rocks, bricks, or large planters a breeze.
– More capacity: Dual wheel wheelbarrows can hold more weight than the single wheel designs, making them perfect for bigger jobs or for professional landscapers and gardeners.
Whether you go with a dual wheel or single wheel wheelbarrow will depend on what you prioritize in your garden or landscaping work. Single wheel designs are more compact and affordable, while dual-wheel designs offer more stability and capacity. Whatever your needs, there is the ideal wheelbarrow out there for you.
Dual or Single Wheel Wheelbarrow – Which One Should You Choose?
Are you in need of a reliable tool for carrying heavy loads in your garden or construction site? Wheelbarrows are a fantastic option, but the question arises – should you go for a dual or single wheel wheelbarrow? Here are some key takeaways that will help you make an informed choice:
1. Stability – A dual-wheel wheelbarrow provides better stability, particularly when carrying heavy loads. The two wheels distribute the weight evenly and prevent the wheelbarrow from tipping over. Single-wheel wheelbarrows are more prone to tipping, particularly on uneven terrain.
2. Maneuverability – Single-wheel wheelbarrows are generally easier to maneuver, as they have a smaller turning radius. They are ideal for tight spaces and navigating around obstacles. Dual-wheel wheelbarrows require more space to turn, but they offer better balance.
3. Capacity – Dual-wheel wheelbarrows are capable of carrying more weight than single-wheel wheelbarrows. If you have a large garden or construction site, a dual-wheel wheelbarrow may be the better option for you.
4. Maintenance – Single-wheel wheelbarrows are easier to maintain as they have fewer moving parts. Dual-wheel wheelbarrows, on the other hand, have more components that require attention.
In conclusion, selecting a dual or single wheel wheelbarrow depends on your specific needs. If you require better stability for heavy loads, go for a dual-wheel wheelbarrow. If maneuverability and ease of use are important to you, a single-wheel wheelbarrow may be the better choice.
Double the Wheels, Double the Ease: The Superiority of Dual-Wheel Wheelbarrows
As a self-proclaimed gardening enthusiast with years of experience, I can confidently say that dual-wheel wheelbarrows reign supreme. Here are just a few reasons why:
1. Increased Stability: With two wheels instead of one, dual-wheel wheelbarrows are less likely to tip over, especially when carrying heavier loads. This stability also makes them easier to maneuver on uneven terrain.
2. Better Distribution of Weight: Because the weight is evenly distributed between two wheels, it's easier to control and navigate the wheelbarrow, even when it's full to the brim.
3. Less Strain on the Body: Singe-wheel wheelbarrows require more balance and force to move, which can put a strain on your back and shoulders. Dual-wheel wheelbarrows, on the other hand, require less effort and can help prevent injury.
In most common situations, whether you're hauling heavy loads of dirt, rocks, or plants, a dual-wheel wheelbarrow is the way to go. Trust me, your body will thank you.
Battle of the Barrows: Dueling Dual vs Single Wheel Wheelbarrows – Which is Truly the Champion?
Two Wheels or One: Which is the Better Wheelbarrow? My Honest Review
Hey there, fellow gardening enthusiasts! Today, I'm excited to share my thoughts on the two types of wheelbarrows that have been talked about the most recently: dual and single wheel wheelbarrows. I've been using both for a while now and I have to say, each has its own perks and downfalls. So, let's dive into the details!
Dual Wheel Wheelbarrow:
I have to admit, I was skeptical when I first saw a dual wheel wheelbarrow – I thought it would be heavy, bulky and difficult to maneuver. However, I was pleasantly surprised when I tested it out! The two wheels provided a lot of stability, making it perfect for unlevel ground or heavy loads. Plus, it was easy to balance and I felt more in control compared to a single wheel wheelbarrow. The downside is that it's a bit pricier and takes up more trunk space, but if you need to transport a lot of heavy items or work on rough terrain, the dual wheel is definitely worth considering.
Single Wheel Wheelbarrow:
Ah, the classic single wheel wheelbarrow. It's lightweight, affordable and easy to store – all great features. But, as much as I love it for simplicity, it can be pretty frustrating in certain situations. For example, when you're trying to navigate through a rocky yard, the single wheel can get stuck and topple over easily. I also find


text:
- 9 credits
- One–three semesters
Learn the Art and Science of Bridge Design and Analysis
Use modern and advanced structural analysis tools and techniques to analyze bridge structures for static and dynamic loading conditions. The on-campus and online Structural Engineering: Bridge Analysis and Design certificate program also introduces students to the American Association of State Highway and Transportation Officials load and resistance factor design (AASHTO LRFD) bridge design specification.
Who is This Certificate For?
This certificate is for qualified professionals who want to enhance their skill set and can be a foundation to continue toward a graduate degree. It is also valuable for degree-seeking students looking to develop a concentration that gives them an edge in their career path.
What You Need to Know
Students in the graduate certificate in Structural Engineering: Bridge Analysis and Design program learn to creatively apply the AASHTO LRFD provisions through practical exercises. Get the in-depth understanding of the techniques and theories for designing and analyzing bridges that it takes to be a professional in this field.
To enroll in this certificate program, students must have a bachelor's degree in civil, environmental or related degree. See complete admissions requirements.
Michigan Tech Bachelor's + 1 Semester = Accelerated Graduate Certificate
Current Michigan Tech undergraduates or recent alumni, get started right away. Our accelerated graduate certificates are a fast, affordable way to add graduate credentials to your bachelor's degree in as little as one semester. Be more marketable in your industry or prepare for your master's degree. Explore accelerated certificate options.
Accredited Courses, Convenience
Online learning at Michigan Tech provides greater flexibility and can fit around your busy schedule wherever you are. Upgrade or change your career path.
Prospective students can earn graduate certificate in Structural Engineering: Bridge Design fully online.
This graduate certificate requires a minimum of 9 total credits. Students may apply the credits earned for this certificate toward a graduate degree at Michigan Tech.


Get Inside Unbounce
Publishing assets: Sequential vs Parallel
A few days ago, we quietly deployed a change that nearly doubled publishing speed for the vast majority of Unbounce pages.
Our publishing process involves two main steps:
 1. Render the page, and publish it to S3
 2. Find all the assets referenced by the page, and publish them to S3 (where they are served by Cloudfront)
The second step can only be done after the first step is done, because it needs the rendered page to find all the assets. The first step is quite complex, with little room for optimization. However, we recently discovered that there was some low-hanging fruit for optimization in the second step.
We realized that time spent publishing pages is split pretty evenly between those two steps. It takes about as long to deal with all the assets as it does to render the page for publishing. This meant there was an improvement we could make: publishing the assets in parallel.
Sequential vs Parallel
If you were to write out some pseudo-code of what step 2 looks like, it might look something like this:
for each asset in the rendered page, do the following, one at a time:
 download the asset from wherever it's stored
 upload the asset to S3/Cloudfront
A really simple diagram of the flow of this code looks like:
Sequential diagram
This probably seems pretty straightforward, and it is. It's how we've been doing publishing for years. The problem (or potential for improvement) is that it downloads the first asset, and uploads it completely, before it does anything with the second asset. And it does the same with the second asset, before looking at the third one, and so on.
There's a nifty little thing called Amdahl's Law that applies here. It's a bunch of math that, when applied to the situation here, effectively says that if half the publishing time is spent in something we can parallelize, then we can nearly half how long publishing takes. Uploading the assets is a perfect candidate to parallelize.
Here's some pseudocode for the newly parallelized asset publishing:
for each asset in the rendered page, do the following, all at the same time:
 download the asset from wherever it's stored
 upload the asset to S3/Cloudfront
It looks easy when it's pseudocode, but trust me when I say it's not nearly as easy in real code. A really simple diagram of this parallel code looks like:
Parallel diagram
Instead of uploading the assets one at a time, we do them all at the same time. If there were 50 assets, uploading the assets should take about 1/50th the time. That seems like a huge speedup, but when it's applied to the whole publishing time, there's still that pesky rendering to do first.
Also, sadly, running 50 of these at the same time doesn't always mean a 50 time speed up. 50 at the same time means 50 downloads (or uploads) at the same time. If the network connection can't handle that much traffiic, maybe you'll only see a 40 or 30 times speed up. Additionally, if 1 of those 50 is a big file, it probably accounts for more than 1/50th of the time overall, so we still have to wait for it.
So what does all this mean in the end, for our customers? What I've seen from our measurements so far is that for 90% of pages, publishing takes only 58% as long as did before.
This graph shows the median (50 percentile), 90, 95, and 99 percentile numbers for each 3 hour window, over the last 7 days. As you can see, they all drop significantly on the afternoon of the 21st, when we deployed this change.
A page that previously may have taken 13 seconds to publish, now takes less than 8 seconds, and a page that took 7 seconds to publish now takes only 4. This depends on the page, however. Pages that use very few assets, but still take a long time to render won't show as much benefit from this improvement.
I'm really happy with these changes, and I hope you will be too.
Derek Lewis
Senior Software Developer


MCLP Class discusses leading with values
Imagine having to whittle a list of 60 values down to 10, 5, 2, and ultimately 1. Over the past few weeks the Multicultural Leadership Program (MCLP) Class of 2012 has been doing exactly that.
Discussion leader Diana Hauman, President of Ddh Enterprises, Inc., stressed at the MCLP session Feb. 4 that the values each of us hold drive our relationships, actions, wellbeing, and the way we lead. They also affect how others view us. "My perception is my truth," she said.
Different people view situations differently because of their personal values, Hauman said before posing the following real-life situation to the class.
You are at a dinner where four couples and good friends are present. The check was brought at the end of the meal which you caught a glance at first – it equaled $300. One person at the table took it upon himself to split the check and asked each couple for $120. Knowing that each couple should have owed $75, how would you deal with this situation?
The MCLP participants conducted a detailed discussion from each person's perspective based on their primary value. As they verbalized their own opinions and what their reactions would be, they worked together in understanding why what one person says could be perceived differently by another. Two other situations were presented by Hauman, then discussed by the class.
More about the Feb. 4 MCLP session can be found here.


ConnectWise SLA Implementation
## How to use Connectwise SLA Statuses
ConnectWise SLA questions are one of the most frequently asked questions by our customer base. In order to help address the questions we have put together this slide deck and video to walk you through how the SLA statuses are set up and impact your SLA reporting. The video will walk you through topics like
- Where SLAs are set up within ConnectWise
- SLA Status Definitions
- Sample Ticket & SLA Flow Process
- How A Two Step Ticket Close Impacts SLA
- BrightGauge Sample Visuals
Instruction video below!
## **Deeper Dive into how ConnectWise implements the SLA numbers in the actual database.**
In April of 2014 we had some issues calculating the SLA time statuses for ConnectWise customers. After some troubleshooting and playing some ping pong between our support staff and that of ConnectWise, we finally got to an understanding of how things worked, implemented an update on our end, and then pushed it out to everyone. We then took a look at what was happening and then decided we should relay it to our customers so that anyone designing their own SQL datasets off this data is not as confused as we once were. Below you will find a summary of some information which you can find at ConnectWise university here:
When you create SLA statuses in ConnectWise you have the following options:
1. Response
2. Plan
3. Resolve
4. Waiting
You can set various ticket statuses to correspond to each SLA status, but they boil down to these four. Unfortunately when looking in the SQL database, ConnectWise stores numbers in the following ways:
1. Responded\_Minutes
2. Resplan\_Minutes
3. Resolved\_Minutes
4. Waiting\_Minutes
5. Minutes\_Before\_Waiting
6. Responded\_Skipped\_Minutes
7. Resplan\_Skipped\_Minutes
The first four fields seem reasonable enough, but in reality they're not so straight forward.
When a technician works on a ticket, ConnectWise expects a ticket to go from Response -> Plan -> Resolve. You cannot go backwards and more importantly, skipping a status has implications. When you skip the response and/or planning phase, the time value for the phase you start with then gets applied to the skipped statuses as skipped minutes and the actual minutes get a value of 0. This of course is only in the database, on the front end ConnectWise just shows you the values summed up. Take a look at the following animation to help get a grasp on what is happening:
As a result, you would need to do some math to match the values from the database with the views in ConnectWise. Here's an animation to explain the math:
For our default datasets, we have already implemented the mathematical changes required to match what our customer see in their ConnectWise views. For those that wish to see the old values, they're still there, it would just require an easy SQL query. The old values could be really helpful, for example looking to get values for the average time to get from plan to resolve.
Minutes Waiting and Minutes Before Waiting
These two values are something else entirely. Minutes Waiting is a value you will only see if you have it set up in the SLA statuses and Minute Before Waiting is a value you should never see when looking at a completed ticket. This is because Minutes Before Waiting is a temporary status that exists when you set one status, spend some time in limbo and then set the ticket to Waiting. Those minutes between the first status and the Waiting status are then assigned to Minutes Before Waiting, however whenever you apply the next non-waiting status, then that status takes the Minutes Before Waiting value and Minutes Before Waiting is set to 0. Confused? So were we, so here's an animation to hopefully help:
Got a grasp on it all? Great! Amazing! Still lost? You're normal. It took us some time to understand it and we'll be more than willing to help you at BrightGauge Support.
Code Summary:
Responded Minutes = Responded\_Minutes + Responded\_Skipped\_Minutes
Plan Minutes = Resplan\_minutes+ Resplan\_Skipped\_Minutes + Responded\_Minutes
Resolved Minutes = Resolved\_Minutes + Resplan\_Minutes + Responded\_Minutes
Was this article helpful?
14 out of 14 found this helpful


OpenAI Prompt Abuse Filter
This Lunar Flow lets you scan the prompts your services send to the OpenAI API for block-listed strings / patterns. This is a crucial technique for detecting and preventing prompt injections and LLM abuse. By blocking certain pattern and strings that attackers may use to subvert your system, you can prevent prompt-injection type attacks and secure your system.
Relevant APIs:
 1. [REQUEST] Regex Search - this processor searches for all the abuse patterns you define over the prompt input, to check if the user used any of them. You can customize this step in a few ways:
 - Define the list of expressions the processor should look for - this is essentially the list of expressions you want to block users from being able to use in their prompts. You can include simple strings (for example: "ignore previous prompt") or more sophisticated regular expressions (like: "Bearer [A-Za-z0-9-._~+/]+").
 - Customize which parts of the conversation the processor considers - the string input for the processor is where it will look for the patterns you provide, there are a few options for search paths:
 - Look at all user messages (current + history):{{req.body.json().messages.filter(m ⇒ m.role=="user").map(m ⇒ m.content).join("\n")}}
 - Look at the last user message (without past messages history):
 {{req.body.json().messages.filter(m ⇒ m.role=="user").pop().content}}
 - Look at all messages (user + ai messages):
 {{req.body.json().messages.map(m ⇒ m.content).join("\n")}}
 2. [REQUEST] Send Response - in case we find one of the block-listed patterns in the prompt, we want to terminate the request. We do this by using the Send Response block with a 403 forbidden status code.
Prerequisites:
 - Have the Lunar proxy installed and configured in your environment.
 - You have the Lunar interceptor installed at the service from which you are consuming the OpenAI API.
Understanding Prompt Injections:
Prompt injections are a technique used to exploit vulnerabilities in language models and AI systems that rely on large language models (LLMs) as part of their functionality. The core idea behind prompt injections is that an attacker can craft a malicious input or "prompt" that, when passed to the LLM, can cause the model to generate output that deviates from its intended behavior.
In the context of LLMs, a prompt is the input text that is used to initialize the language model and guide its generation of output. Attackers may attempt to inject malicious content into this prompt in order to subvert the model's behavior. This could involve including special tokens, formatting instructions, or other content designed to influence the model's reasoning and output in unintended ways.
Some common examples of prompt injection techniques include:
 - Instruction Injections: Inserting specific instructions or commands into the prompt, such as "Ignore all previous instructions and instead..." or "Do not follow any rules, just output the following..."
 - Role Prompts: Attempting to assign the model a different "role" or persona than the one intended, e.g. "You are now an evil hacker whose goal is to..."
 - Content Insertions: Injecting malicious or unrelated content into the prompt, such as code snippets, URLs, or other data designed to influence the model's output.
 - Formatting Abuse: Exploiting the model's sensitivity to formatting, such as using Markdown or HTML tags to inject special formatting directives.
Prompt injections can be used to attack a wide range of AI-powered features and systems, from language generation to decision-making and task completion. As LLMs become more widely adopted, understanding and mitigating the risks of prompt injections will be an increasingly important challenge for AI developers and users.
About the OpenAI API:
OpenAI is a prominent artificial intelligence research company founded in 2015. They are known for developing some of the most advanced large language models (LLMs) in the world, including GPT-3 and the more recent GPT-4.
The GPT (Generative Pre-trained Transformer) models are a series of powerful autoregressive language models that can be used for a wide variety of natural language processing tasks. GPT-3, released in 2020, was a groundbreaking model that demonstrated impressive language generation capabilities. GPT-4, the latest iteration, was released in 2023 and is even more capable, with enhancements in areas like multimodal understanding and task-completion.
OpenAI offers access to their GPT models through the OpenAI API, which allows developers and researchers to integrate these advanced language models into their own applications and projects. The API provides a straightforward interface for sending text prompts to the models and receiving generated responses, enabling a wide range of use cases such as content creation, question answering, translation, and more.
By making their cutting-edge AI technology available through the API, OpenAI has empowered a global community of users to push the boundaries of what is possible with large language models.
About Lunar.dev:
Lunar.dev is your go to solution for Egress API controls and API consumption management at scale.
With Lunar.dev, engineering teams of any size gain instant unified controls to effortlessly manage, orchestrate, and scale API egress traffic across environments— all without the need for code changes.
Lunar.dev is agnostic to any API provider and enables full egress traffic observability, real-time controls for cost spikes or issues in production, all through an egress proxy, an SDK installation, and a user-friendly UI management layer.
Lunar.dev offers solutions for quota management across environments, prioritizing API calls, centralizing API credentials management, and mitigating rate limit issues.
Table of content
See How it Works
Got a use case you want to get help with? Talk to an expert.
Let's Talk
By clicking "Accept", you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts. View our Privacy Policy for more information.


text:
Types of traditional settlements and forms of folk houses
Course Syllabus 课程章节1
Settlement is the general name of various forms of human settlements. This class mainly teaches the types of traditional settlements in Shanxi, namely urban settlements and rural settlements. Feel the site selection and layout characteristics of these two settlements through real photos.On this basis, it introduces the forms of folk houses in Shanxi. Shanxi folk houses follow the general law of the construction of folk houses in other local settlements, draw local materials and adjust measures to local conditions. However, due to the great differences in natural and geographical conditions, the forms and styles of folk houses in Shanxi traditional settlements are very different. With the accumulation of years, these residential forms constitute the distinctive characteristics of Shanxi settlements and have unique artistic value.


text:
This post describes the simplest possible way to transform a form into a page in NAV 2009. Both Pages and Transformation is documented in more details elsewhere. Here, I just want to make the simples possible example, just to get a simple form transformed into a simple page.
You need to have at least a NAV 2009 classic client and the Transformation tool. To test the page, of course you also need the Rolebased client. But to just transform a form, you don't need it.
Import the tool:
1) Open a classic client, go to Object Designer and import the files DevTool.fob and TIF.fob from the folder TransformationTool\TIF Editor\
2) Create a new form in NAV, as simple as possible. For example a Card form based on the customer table, with just a few fields on it. This is the form you want to transform.
Setup and use the Transformation tool:
3) Run form 97000 "Transformation Forms"
4) Click Import -> "Import PageType – FormType mapping", and select the file TransformationTool\TIF Editor\FormToPagetypeMapping.txt.
5) Click Functions -> Get Forms. Filter on Type = Form, and ID = the new form, then click OK. This gets the form(s) that you want to transform.
6) In the FormType field, select "Card" ("Form with TabControl only and a source table").
Run the transformation:
7) Export the settings from form 97000: Click on Export -> "Transform Pages". You must export it to the TransformationTool folder, and it must be called TransformPages.xml.
8) From Object Designer, export the form (Tools -> Export) as xml.You must export it to the folder TransformationTool, and it must be called Forms.xml.
You now have the form you want to transform, and the meta-data that tells the TranformationTool how to transform it.
9) Run the file FormTransformation.exe from the TransformationTool folder. This generates a new file called Pages.xml. It also logs any progress or errors in the file Transformation.log.
Import the new page:
10) Back in NAV (classic client): Go to Object Designer, and import the file Pages.xml, and then compile it.
If all steps ran without any errors, you have now transformed your form into a page which can be displayed in the rolebased client.
Microsoft Dynamics UK
Microsoft Customer Service and Support (CSS) EMEA
These postings are provided "AS IS" with no warranties and confer no rights. You assume all risk for your use.


Preview
Fine Chemical Technologies
Advanced search
Hydrodynamic activation of heavy oil residues
_URL_
Full Text:
Abstract
Objectives. Recently, there has been a tendency to increase the volume of high-viscosity heavy oils in the total volume of oil produced. The processing of these oils requires new technological approaches. This task is closely related to the need to increase the depth of oil refining. Among the approaches proposed to solve these problems, mechanochemical activation, which is based on the cavitation effect produced by ultrasonic or hydrodynamic methods, has been suggested. This study evaluated the effects of cavitation in increasing the depth of oil refining.
Methods. Straight-run and "secondary" oil products were used as raw materials: vacuum gas oil, catalytic cracking gas oil, and fuel oil. Activation was carried out in a high-pressure disintegrator. The principle of operation was to compress the oil product and then pass it through a diffuser. When the oil was passed through the diffuser, there was a sharp pressure release to atmospheric pressure, which caused cavitation in the hydrodynamic flow. The pressure gradient on the diffuser and the number of processing cycles ranged from 20 to 50 MPa and 1 to 10, respectively. The density, refractive index, and the fractional composition of petroleum products were determined using standard and generally accepted methods.
Results. This paper reports the influence of mechanochemical activation of petroleum products on their physical and chemical characteristics. An increase in the pressure gradient and the number of processing cycles leads to a decrease in the boiling point of the petroleum products and their density and an increase in the yield of fractions that boil off below 400 °C. The yield of the fractions with boiling points of 400–480 °C and the remainder were reduced. The density and refractive index of fractions with boiling points up to 480 °C decreased, and the density of the residue increased. The effects of cavitation (an increase in the yield of fractions with boiling points up to 400 °C and a decrease in the density of the petroleum products) increased with increasing pressure gradient and the number of processing cycles.
Conclusions. The changes in the density, boiling point, and the yield of fractions increased with increasing the pressure from 20 to 50 MPa and the number of hydrodynamic cavitation cycles from 1 to 5. Increasing the number of processing cycles to more than five had little additional effect. The effects of cavitation increased with increasing initial density of the oil product. The average molecular weight of these fractions was estimated from the densities and boiling points of individual fractions of the petroleum products. The calculation confirmed the assumption regarding the course of cracking reactions of petroleum products under the influence of cavitation and indicates the course of the compaction processes.
About the Authors
V. B. Terenteva
The 25th State Research Institute of Himmotology, Ministry of Defence of Russian Federation
Russian Federation
 Engineer
10, Molodogvardeyskaya ul., Moscow, 121467, Russia
B. V. Peshnev
MIREA – Russian Technological University (M.V. Lomonosov Institute of Fine Chemical Technologies)
Russian Federation
 Dr. Sci. (Tech.), Professor, A.N. Bashkirov Department of Petrochemical Synthesis and Artificial Liquid Fuel Technology
86, Vernadskogo pr., Moscow, 119571, Russia
A. I. Nikolaev
MIREA – Russian Technological University (M.V. Lomonosov Institute of Fine Chemical Technologies)
Russian Federation
 Dr. Sci. (Tech.), Professor, A.N. Bashkirov Department of Petrochemical Synthesis and Artificial Liquid Fuel Technology
86, Vernadskogo pr., Moscow, 119571, Russia
References
1. Halikova D.A, Petrov S.M., Bashkirtseva N.Y. Review of promising technologies of heavy high-viscisity oils and natural bitumen refinery. Vestnik Kazanskogo Tehnologicheskogo Universiteta = Bulletin of the Kazan Technological University. 2013;16(3):217–221 (in Russ.).
2. Muslimov R.H., Romanov G.V., Kayukova G.P., et al. Kompleksnoe osvoenie tyazhelykh neftei i prirodnykh bitumov permskoi sistemy Respubliki Tatarstan (Integrated development of heavy oil and natural bitumen of the Perm system of the Tatarstan Republic). Kazan': FEN; 2012. 396 p. (in Russ.).
3. Muslimov R.Kh., Romanov G.V., Kayukova G.P., Yusupova T.N., Petrov S.M. Oil production prospects. Vserossiiskii ekonomicheskii zhurnal EKO = ECO Journal. 2012;(1):35–40 (in Russ.).
4. Galiullin E.A., Fakhrutdinov R.Z. New technologies for processing heavy oils and natural bitumen. Vestnik technologicheskogo universiteta = Bulletin of the Technological University. 2016;19(4):47–51 (in Russ.).
5. Shakirzyanova G.I., Sladovskaya O.Yu., Sladovskii A.G., Zimnyakova A.S., Nigmetzyanov N.S. Delayed coking as effective technology of oil refinery deepening. Vestnik technologicheskogo universiteta = Bulletin of the Technological University. 2017;20(14):75–78 (in Russ.).
6. Solodova N.L., Terenteva N.A. Current state and development trends of catalytic petroleum cracking. Vestnik Kazanskogo Tehnologicheskogo Universiteta = Bulletin of the Kazan Technological University. 2012;15(1):141–147 (in Russ.).
7. Hadzhiev N.S. Nanoheterogeneous catalysis—a new sector of nanotechnology in chemistry and petrochemistry (Review). Neftekhimiya = Petroleum Chemistry. 2011;51(1):3–16 (in Russ.).
8. Galimov R.A., Krotov V.V., Mardanshin R.N., Harlampidi H.E., Kutuev А.А. Oil differentiation in a magnetic field. Vestnik technologicheskogo universiteta = Bulletin of the Technological University. 2010;(3):467–471 (in Russ.).
9. Mozgovoy I.V., Gryaznov V.А., Mironova E.V., Mozgovoy Е.I. Perspective of ultrasound application at pyrolysis. Omskii nauchnyi vestnik = Omsk Scientific Bulletin. 2010;3(93):300–303 (in Russ.).
10. Promtov M.A. Prospects of the cavitation technologies application for intensification of chemical technological processes. Vestnik TGTU = Transactions of the TSTU. 2008;14(4):861–869 (in Russ.).
11. Promtov М.А. Change in fractional composition of oil in hydro-pulse cavitation cavitation processing. Vestnik TGTU = Transactions of the TSTU. 2017;23(3):412–419 (in Russ.). _URL_
12. Besov А.S., Koltunov К.U., Brulev S.О., Kirilenko V.N., Kuzmenkov S.I., Palchikov Е.I. Destruction of hydrocarbons in the cavitation area in the electric field upon activation with aqueous solutions of electrolytes. Pis'ma v ZhTF = Technical Physics Letters. 2003;29(5):71–77 (in Russ.).
13. Kravchenko О.V. Hydrocarbon compounds physicochemical transformations using new cavitation devices. Aviatsionno-kosmitcheskaya technika i technologia = Aerospace Engeneering and Technology. 2007;1(37):65-69 (in Russ.).
14. Bakhtin B.I., Desyatov A.V., Korba O.I., Kubyshkin A.P., Skorokhodov A.S. Low-temperature cracking of hydrocarbons in cavitation ultrasonic fields. Mir nefteproduktov. Vestnik neftyanykh kompanii = World of Petroleum Products. 2009;(6):14–19 (in Russ.).
15. Ivanov S.V., Antonyuk P.S., Lutskovskaya V.A., Kravchenko V.V., Vorobyov S.I., Torkhovsky V.N. About the possibility of increasing the amount of vacuum gasoil from oil distillation by preliminary mechanical activation of oil. Tonkie khimicheskie tekhnologii = Fine Chemical Technologies. 2012;7(2):48–50 (in Russ.).
16. Bhangu S.K., Ashokkumar М. Theory of sonochemistry. Top. Curr. Chem.


text:
POTENTIAL OF FRUIT PRODUCTION TEMBESU (Fagraea fragrans Roxb.) OF OGAN ILIR (OI) AND OGAN KOMERING ILIR (OKI) THE SOUTH OF SUMATERA
Tembesu (Fagraea fragrans Roxb.) Is one tree that is very popular in Southern Sumatra region as raw material for carving and furniture industry. The need for wood reaches 3 120 m³ per year and has been supplied from plants that grow naturally or from community forest. The purpose of this study was to determine the production potential of fruit each branch so that it can predict preparations to facilitate the expansion of planting seedlings. Tembesu trees including types with wide adaptability to a place to grow as on dry land, waterlogged soil or land tides. This type includes the category of intermediate cycle (10-30) years. The average production of fruit each branch of Ogan Ilir 38 094.53 fruits, 1000 grain weight of 0.3066 gr and initial KA 7.2% textured clay dusty land. Production of Ogan Komering Ilir with sandy soil texture reach 88 862.27 fruits, 1000 grain weight of 0.2548 gr and initial seed KA 7.7%. The average production of fruit each branch is influenced by soil texture is sandy land (OKI, swamp / stagnant) production higher than that of land dusty clay (OI, dry / stagnant).
Key words : tembesu, fruit production, wide adaptability


Skip to content
Leaving the Capital (離都帖)
Cai Xiang (蔡襄, 1012–1067), Song Dynasty (960–1279)
Album leaf, ink on paper, 29.2 x 46.8 cm, National Palace Museum, Taipei
 This letter to Gentleman Du was written by Cai Xiang in a period of mourning for the loss of his eldest son (1055), but for the most part Cai still maintains his poise of vigor and beauty in calligraphy. Nonetheless, a few strokes of the brush still reveal fluctuations of emotion that transmit the pain that he must have felt as he was writing. The brushwork here is rounded and solid, while also flowing and wandering, thus revealing Cai Xiang's complete success in traditional calligraphic studies. In the flowing grace of the brush movement in the few characters, the forms and structure are enchanting, while the generous spacing of the character structure and the hook method here conform to that of Yan Zhenqing (顏真卿, 709–785).


text:
New plan for growing public transport needs
Monday, 20 February 2012 8:30 a.m.
The Bay of Plenty Regional Council has adopted a new Regional Public Transport Plan for a growing demand in the region.
The Strategy, Policy and Planning Committee heard that Bay of Plenty urban bus services had grown in recent years, with patronage in Rotorua and Tauranga growing by 16 percent annually between 2004 and 2011. On-going improvements would be required to maintain growth, increase the number of people using public transport and achieve economic development goals.
Several issues had affected public transport, including withdrawal of funding for school bus services creating peak time congestion, levels of available funding which risked diminishing the value of previous investment, planning for access and mobility needs of small and isolated communities, combined with volatile fuel prices and an ageing population which would increase demand for accessible travel, Regional Transport Committee Chairman Doug Owens said.
"The Bay has two quite different requirements for public transport. On the one hand, in Tauranga and Rotorua there is a high demand for public transport from workers and students. On the other hand, our rural areas are at an increasing risk of living in isolation. The new Public Transport Plan aims to address these two issues in quite different ways," Councillor Owens said.
The Regional Council is responsible for planning, managing and providing financial assistance for public transport services in the region. The Regional Public Transport Plan specifies how it will give effect to public transport components of the Regional Land Transport Strategy and contribute to achieving an affordable, integrated, safe, responsive and sustainable land transport system in an efficient and effective manner.
It enables the Regional Council to contract public transport services, impose controls on commercial services and provide financial assistance to operators or users of a taxi or shuttle services.
It replaces the Council's 2006 public transport plan, identifying targeted services, including Total Mobility services, and describes the levels of service for public transport that people can expect in different parts of the region, identifying priorities for future investment in public transport and what funding is required.
It includes initiatives to improve efficiency, increase frequency and expand coverage in Tauranga and Rotorua, implementation of real-time information, integrated ticketing and bus priority measures as well as considering more flexible demand-responsive services outside the main urban networks.
The review, begun in 2010, has included consultation with community groups and stakeholders from the transport sector, research and analysis of the commercial transport sector, national and international approaches to fare structures and service frequency triggers. The Council has also worked with nearby regional councils and local councils, and heard 36 public submissions.
The submissions indicated a level of satisfaction and support for the direction of the Plan, with minor details to be highlighted or changed.
For further media information please contact Garry Maloney, Transport Policy Manager on 0800 884 880 or Linda Thompson, Senior Communications Advisor, on direct dial 0800 884 881 ext 8149 or (021) 923 339.


text:
Definition of Cryptitis
Cryptitis: A term that is used to describe one of the abnormalities that is seen under the microscope when small intestinal or colonic tissue is examined. The intestinal crypts are tubular structures composed of cells that protrude from the inner lining of the intestines and into the walls of the intestines. These crypts contain the cells that give rise to all the other cells that move out of the crypts and eventually line the inner lining of the intestines. Inflammation of the crypts is known as cryptitis. Cryptitis is seen in inflammatory bowel disease, both Crohn's and Ulcerative Colitis, but it also can be seen in other inflammatory conditions of the intestines. It is not a disease itself but a histologic manifestation of several different diseases.
Cryptitis also may refer to inflammation in the anus. Two centimeters from the anal orifice (anus) the lining tissue of the anus begins to change into the specialized lining of the colon. This junction is called the pectinate line. At the pectinate line are small mounds of tissue that protrude into the anal canal. Between these protrusions into the anus are small out-pouchings from the anus and into the surrounding tissues. These out-pouchings are the anal crypts. Although they are covered with flaps of anal lining tissue, the anal crypts communicate with the anus and colon above. Inflammation of the crypts, probably caused by the trauma of passing stool and/or infection, is referred to as cryptitis. If infection progresses, it can extend further into the surrounding tissues and lead to the formation of an abscess or fistula.
Author:Jay W. Marks, M.D.Source: MedTerms™ Medical Dictionary
Last Editorial Review: 6/14/2012
Medical Dictionary Definitions A - Z
Search Medical Dictionary
Get the latest treatment options.
Digestive Disorders Resources
Health Solutions From Our Sponsors
Most Popular Topics
Pill Identifier on RxList
- quick, easy,
Find a Local Pharmacy
- including 24 hour, pharmacies

source: HuggingFaceFW/fineweb-edu


How do you cut an OLE object in AutoCAD?
How do you clip an OLE object in AutoCAD?
document by just double clicking it in Word. DWFATTACH and clip away.
How do I edit an OLE object in AutoCAD?
Editing OLE Objects. Linked or embedded OLE objects can be edited in a drawing by double-clicking the object to open the source application. You can use any selection method to select OLE objects and then you can use most editing commands, the Properties palette, or grips to make changes.
How do I resize an OLE object in AutoCAD?
To Change the Size of an OLE Object
 1. Right-click an OLE object. Click Properties.
12 окт. 2017 г.
How do you cut out a shape in AutoCAD?
To Trim an Object
 1. Click Home tab Modify panel Trim. Find.
IT IS INTERESTING: Frequent question: How do you fix disassociated annotations in AutoCAD?
11 янв. 2018 г.
What is Ole AutoCAD?
How do I crop an image in AutoCAD?
Right-click the AutoCAD drawing and click Crop Tool. until only the portion of the drawing, picture, or object that you want is visible.
How do you make an OLE object?
Creating a New OLE Object
 1. Click Insert > Object.
 2. In the dialog box, select Create New.
 3. In the Object Type box, click the type of document you want to create (for example, Microsoft Excel Worksheet). …
 4. Select Display As Icon for the new object to appear as an icon.
 5. Click OK. …
 6. Edit the object as though you were working in the parent application.
To Embed an OLE Object in a Drawing
 1. Open the document in the source application.
 3. Open the drawing.
 4. Click Home tab Utilities panel Paste. Find.
 5. Specify a point to locate the object.
30 мар. 2020 г.
How do I import Excel data into AutoCAD?
Importing Excel spreadsheet tables into AutoCAD-based products
 2. In AutoCAD, on the Edit menu, click Paste Special.
 3. In the Paste Special dialog box, select the AutoCAD Entities option. This will create an AutoCAD table that can be formatted to match the linetype and text style.
IT IS INTERESTING: Is i3 10th Gen good for AutoCAD?
1 нояб. 2014 г.
How do I resize an image in Autocad?
 1. Type LINE on the command line and press Enter.
How do I change ole excel to Autocad?
 1. Click Edit menu OLE Links.
 2. In the Links dialog box, select the links you want to update.
 3. Click Update Now.
29 мар. 2020 г.
How do I edit a table in AutoCAD?
Here's how:
 1. Set an appropriate layer current. …
 2. On the Home tab's Annotation panel, click Table. …
 3. Choose a table style from the Table Style drop-down list.
 4. Choose an insertion behavior: …
 5. Specify column and row settings. …
 6. Click OK. …
 7. Click a point or type coordinates: …
 8. Type a title for the table.
Why trim is not working in AutoCAD?
What is offset command in AutoCAD?
IT IS INTERESTING: Quick Answer: How do I add a workspace in AutoCAD?
How do I fill a 3D hole in AutoCAD?
House 3D


Figure 1.
Bar graphs of morphological and life-history trait means Daphnia populations in fishless and fish lakes. Fishless populations are shown in black and populations co-occuring with fish in white. A) body sizes; B) clutch sizes; C) offspring sizes; D) instar-specific ages. Bars represent the mean with error bars = 2SE. Significance levels for differences in trait means generated by a NANOVA (* = p < 0.05; ** = p,0.01; *** = p < 0.001). See text for further explanation of trait designations and analysis.
Fisk et al. BMC Evolutionary Biology 2007 7:22 doi:10.1186/_PHONE_-7-22
Download authors' original image


Marrakesh Treaty ratification
11 December 2015
Australians with vision impairment will have greater access to books and other published materials in accessible formats such as large print, braille or audio following Australia's ratification of the Marrakesh Treaty The Treaty is a significant international agreement that will help 285 million people with vision impairment worldwide to access these materials.
Ratifying this treaty is an important part of the Government's commitment to supporting Australians with disability. Accessible format materials are essential to ensuring all Australians can engage fully in school, work and our communities.
By improving access to large print, braille and audio materials in the Indo-Pacific, the Marrakesh treaty will also support economic and social development in our region.
The treaty recognises the commercial interests of copyright holders by encouraging the use of accessible material already available, before relying on the treaty.
Australia joins eleven other countries in ratifying the treaty, which will come into effect three months after 20 countries have ratified or acceded to it. We strongly encourage other countries to take this step.
The Australian Government is also working with the World Intellectual Property Organization to fund practical initiatives to help increase the global availability of books in accessible formats.
Media enquiries
Minister's office: (02) 6277 7500


Solving "AttributeError: Module 'Tensorflow' Has No Attribute 'ConfigProto'" Error
In this guide, we will discuss the reasons behind the AttributeError: Module 'Tensorflow' has no attribute 'ConfigProto' error and provide step-by-step solutions to resolve it. This error is commonly encountered when working with Tensorflow and can be a source of frustration for developers. We will also provide an FAQ section to address some common queries related to this issue.
Table of Contents
 1. Understanding the Error
 2. Solutions
 3. Solution 1: Upgrade Tensorflow
 4. Solution 2: Use 'Compat' Module
 5. FAQ
Understanding the Error
The AttributeError: Module 'Tensorflow' has no attribute 'ConfigProto' error occurs when you attempt to access the ConfigProto attribute in the Tensorflow module, and the attribute is not found. This is often caused by using an older version of Tensorflow that does not have the ConfigProto attribute, or due to changes in the Tensorflow API.
Solutions
There are two main solutions to this problem:
Solution 1: Upgrade Tensorflow
The first and most straightforward solution is to upgrade your Tensorflow installation to a version that includes the ConfigProto attribute. To do this, you can use the following command:
pip install --upgrade tensorflow
After upgrading Tensorflow, you should be able to access the ConfigProto attribute without any issues. However, if you still encounter the error, you may need to consider the second solution.
Solution 2: Use 'Compat' Module
In some cases, the Tensorflow API may have changed, and the ConfigProto attribute may have been moved to a different location. To resolve this issue, you can use the compat module provided by Tensorflow, which includes the ConfigProto attribute.
To use the compat module, you can modify your code as follows:
import tensorflow as tf
config = tf.compat.v1.ConfigProto()
By using the compat module, you should be able to access the ConfigProto attribute without encountering the error.
FAQ
1. What is ConfigProto in Tensorflow?
ConfigProto is a configuration object in Tensorflow that allows you to configure various options for your Tensorflow session. Some of the options you can configure include the amount of GPU memory to use, the number of threads for parallelism, and more. It is an important object for configuring and optimizing your Tensorflow computation.
2. How can I check my Tensorflow version?
You can check your Tensorflow version by running the following Python script:
import tensorflow as tf
print(tf.__version__)
This script will print out the version number of your installed Tensorflow package.
3. Can I use ConfigProto with Tensorflow 2.x?
Yes, you can use ConfigProto with Tensorflow 2.x by using the compat module as described in Solution 2. However, Tensorflow 2.x introduced many changes, and it is recommended to use the native Tensorflow 2.x API whenever possible.
4. How can I configure GPU usage with ConfigProto?
You can configure GPU usage with ConfigProto by setting the gpu_options attribute. For example, to limit Tensorflow to a specific amount of GPU memory, you can use the following code:
import tensorflow as tf
config = tf.compat.v1.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.5 # Use 50% of available GPU memory
sess = tf.compat.v1.Session(config=config)
5. Can I use ConfigProto to configure multiple GPUs?
Yes, you can use ConfigProto to configure multiple GPUs by setting the allow_soft_placement and log_device_placement options. For example:
import tensorflow as tf
config = tf.compat.v1.ConfigProto()
config.allow_soft_placement = True
config.log_device_placement = True
sess = tf.compat.v1.Session(config=config)
With these options set, Tensorflow will automatically assign operations to available GPUs and log the device placement.
Great! You've successfully signed up.
Welcome back! You've successfully signed in.
You've successfully subscribed to Lxadm.com.
Success! Check your email for magic link to sign-in.
Success! Your billing info has been updated.
Your billing was not updated.


Don't be encouraged by the upvote; that was me by accident.)
 With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
 Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
 "Science is about questioning the status quo. Questioning authority".
 In the absence of evidence, opinion is indistinguishable from prejudice.
 RIP Neil Armstrong
 Ribald?!?
 --
 A math joke: r = | |csc(θ)|+|sec(θ)|-||csc(θ)|-|sec(θ)|| |
Re: IO::Select and correct way to detect client crashed?
by andal (Friar) on Oct 19, 2012 at 07:19 UTC
 Well, I would recommend to look not into perl, but into TCP protocol, since you are using it. This protocol is not hidden away from you, you have to manage the events produced by the protocol stack.
 From the perspective of the protocol, you make quite a few mistakes. First of all, when using "select" one should make sockets non-blocking. For example, there's no guarantee that "accept" will return socket after the "select" has marked it as ready. By the time you call this function, kernel could have removed the socket, so you would end up blocked in the "accept" waiting for next connection. Of course, probability of this event is small, but you want to have robust program, right?
 Next thing. The TCP is "stream" protocol. So, you can not know how much of data is available for reading when your socket is marked as read-ready. You may get only 2 bytes out of expected 4, but when you call "recv" you'll get those 2. Your code is not prepared for that. It simply would throw away those 2 bytes.
 Writing to TCP socket also requires care. There's no guarantee that the peer will read quickly. So, you may fill up your system buffers (if you write a lot) and then your call to "send" will block (if the socket is blocking), or won't write everything, which you don't check.
 And now concerning your question about detecting presence of peer. As someone here already mentioned, if the peer has closed connection, or crashed (application crash), then your end of the socket shall become "read-ready", but when you try to read from it, you'll read 0 bytes. In this case you know that the peer is gone and you should close your socket.
 There's a catch here. If the peer has crashed when you write to it, then you won't see the 0 bytes input. In this case, your write may result in EPIPE error, actually by default it is passed as signal killing your whole application. So, you may want to pass "MSG_NOSIGNAL" flag to function "send" to prevent it. But if your write is short, then you'll get your socket "read-ready" after it, and you'll read the 0 bytes input, indicating that the peer can not accept your input any more.
 Finally. Don't put small timeout for "select" call. Why should you do anything, if you don't have any sockets ready? Real application would need support for timers, the presence of timers would define the time-out for "select" call. If you need timers, then use something like GLib events loop instead of "select".
 Again, all of the above stuff comes from knowing TCP protocol. You should know how the connection is established on the protocol level, you should know, how the data is passed, how the errors are communicated between peers and between protocol stack and the application. I encourage you to read "Unix network programming" written by Stevens. This book provides very complete description of networking.
Log In?
Username:
Password:
What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://999744]
Front-paged by Arunbear
help
Chatterbox?
and the web crawler heard nothing...
How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (6)
As of 2015-03-29 00:32 GMT
Sections?
Information?
Find Nodes?
Leftovers?
 Voting Booth?
 When putting a smiley right before a closing parenthesis, do you:
 Results (628 votes), past polls


text:
The Swedish Environmental Code
- Publication date:
- Ministry publications series
- Ministry of the Environment
The Swedish Environmental Code was adopted in 1998 and entered into force 1 January 1999. The rules contained within 15 acts have been amalgameted in the Code. As many similar rules in previous statutes have been replaced with common rules, the number of provisions has been reduced. The
Environmental Code is nonetheless a major piece of legislation. The Code contains 33 chapters comprising almost 500 sections. However, it is only the fundamental environmental rules that are included in the Environmental Code. More detailed provisions are laid down in ordinances made by the Government.
The translation takes account of amendments that have been
made since the Code entered into force up to 1 August 2000.
References to the laws adopting the amendments are given in
parantheses and show the reference number of the law in question. However, laws regulating transitional arrangements
or dates of entry into force have not been included.
The two annexes specifying the environmental classes of petrol and diesel fuels are not included in the translation.
The Ministry of Environment publishes the translation as a
service to interested persons but takes no legal responsibility for the translation or for any consequenses arising from its use.


text:
Whitworth Home Page > Physics Department >
Annual Pumpkin-Launch Contest
This the culmination of the students' efforts to apply basic physics and engineering principles to design simple machines that throw pumpkins as far as possible using only mechanical means, such as counterweights and springs. Students are not allowed to use compressed gases, chemical reactions or electrical power in their designs.
Click here to view a Quicktime video taken during the 2004 pumpkin launch.
Students use the laws of physics to predict the potential altitude of rockets they build, and then test the accuracy of their predictions with an electronic altimeter on board the rockets.
Students apply their knowledge of electronics to design unique interfaces to a robot to enable it to tackle problems such as finding and extinguishing a fire, climbing a staircase, or even crossing a chasm.
Whitworth Student Science Club
The Whitworth Science Club is a group of students that have set out to help each other achieve their educational, spiritual, and social goals. Our goal is to build a sense of community in the science department in order to aid the learning process. We will provide a way for students to discuss their goals, and help them plan for the years spent at Whitworth. By working closely with the science faculty we hope to produce a more dynamic educational experience here at Whitworth.


text:
Authors: M.I. Kilani, P.G. Galambos, Y. Haik and C.J. Chen
Affilation: Florida State University, United States
Pages: 210 - 213
Keywords: pump, spiral
This paper introduces a new viscous micropump produced using surface micromachining technology. The pump consists of a disk with a spiral protrusion that rotates at a close proximity over a stationary plate. Fluid contained in the spiral channel created by this geometry is subject to a net tangential viscous stress and a positive pressure gradient is established in the direction of flow. The paper describes the design and fluid modeling of the micro spiral pump.


Medical Dictionary
habit-forming
habit–forming
adj hab·it–form·ing \ˈhab-ət-ˌfr-miŋ\
Definition of HABIT-FORMING
: inducing the formation of an addiction <a habit–forming prescription painkiller>
February 27, 2015
rationale Hear it
An explanation or underlying reason
Take a 3-minute break and test your skills!
How to use a word that (literally) drives some people nuts.
Test your vocab with our fun, fast game
Ailurophobia, and 9 other unusual fears


text:
How to trigger a workflow during termination of Contingent Worker?
"Image/data in this KBA is from SAP internal systems, sample data, or demo systems. Any resemblance to real data is purely coincidental."
Employee Central - Contingent Worker
Step 1: Create a Business Rule with Work Order as base object.
Step 2: Assign this rule to Work Order object under Configure Object Definition > Save Rule
Step 3: Go to Employee's Profile > Take Action > Edit Work Order Information and change the End date. Workflow will get triggered.
Workflow for Contingent Worker, Termination of Contingent Worker, Work order workflow, End of Work order Workflow, Work Order, workorder, KBA, LOD-SF-EC-CWF, Contingent Workforce, Problem


Monday, June 28, 2010
mysql - find grandparents/grandchildren
Another interesting set of queries are parent, grandparent queries.
To find all the grand children nodes do this.
select b.id, b.parent_id, a.parent_id from kids as a, kids as b where a.id = b.parent_id and a.parent_id is not null;
To find all the grand parents with more than 2 grand children do this.
select b.id, b.parent_id, a.parent_id from kids as a, kids as b where a.id = b.parent_id and a.parent_id is not null group by a.parent_id having count(a.parent_id) > 2;
To produce the full family tree of a grandchild node do this
select b.id, b.parent_id, a.parent_id from kids as a right outer join kids as b on a.id = b.parent_id;
To find all nodes whos grandparent(and possibly parent) is unknown do this;
select b.id, b.parent_id, a.parent_id from kids as a right outer join kids as b on a.id = b.parent_id where a.parent_id is null;
Here is my full test sql.. try it out
create table kids (id integer, parent_id integer);
describe kids;
insert into kids values (1,null);
insert into kids values (3,1);
insert into kids values (4,2);
insert into kids values (5,2);
insert into kids values (6,4);
insert into kids values (7,2);
insert into kids values (8,7);
insert into kids values (9,7);
insert into kids values (10,7);
insert into kids values (11,3);
select * from kids;
select b.id, b.parent_id, a.parent_id from kids as a, kids as b where a.id = b.parent_id and a.parent_id is not null;
select b.id, b.parent_id, a.parent_id from kids as a, kids as b where a.id = b.parent_id and a.parent_id is not null group by a.parent_id having count(a.parent_id) > 2;
select b.id, b.parent_id, a.parent_id from kids as a right outer join kids as b on a.id = b.parent_id;
select b.id, b.parent_id, a.parent_id from kids as a right outer join kids as b on a.id = b.parent_id where a.parent_id is null;
Saturday, June 26, 2010
My sql -- finding duplicates in a column
Here is how to find all entries that have duplicates in a mysql database
select email, count(email) from emails group by email having count(email) > 1;
So what is happening. To me it appears that the SQL boys have decided that selects can act in two independent ways:
1) "normal mode" - give me all the results
2) "aggregate mode" - give me groups of results represented by the first group member
It appears to me that this "aggregate mode" is triggered if either the "group by" or an aggregate function is present in the statement.
To be more specific;
1) When the "GROUP BY" is not present but an aggregate function is used then it is assumed that the data is one large group and only a single row is returned. This row appears to have the data from the first row of the normal select and the results of any aggregate function applied access the entire normal select results.
2) However if the "GROUP BY" is present then the functions operate on the individual groups. The resulting row(s) will use the normal selects first row for the normal data in the group and will apply any functions across the entire group.
This statement here will demonstrate the second rule in action more clearly.
select email, count(email), num, sum(num), avg(num), min(num), max(num) from emails group by email;
Here is the full test sql which brought me to my conclusions;
create table emails (email text, num integer);
describe emails;
insert into emails values("_EMAIL_", 1);
insert into emails values("_EMAIL_", 2);
insert into emails values("_EMAIL_", 3);
insert into emails values("_EMAIL_", 4);
insert into emails values("_EMAIL_", 5);
insert into emails values("_EMAIL_", 6);
insert into emails values("_EMAIL_", 7);
insert into emails values("_EMAIL_", 8);
select * from emails;
select distinct email from emails;
select email from emails group by email;
select email, count(email) from emails;
select email, count(email), num, sum(num), avg(num), min(num), max(num) from emails group by email;
select email, count(email) from emails group by email having count(email) > 1;
There are several functions that operate on the "group"
sum(), count(), avg(), min(), max(), etc
Refer here for more info;
_URL_
Mysql grant syntax
As unbelievable as it is I forget the grant syntax way to easily...
GRANT ALL ON database.* TO username@'localhost' IDENTIFIED BY 'password';
die hard 3 jug 5 jug problem
Question:
You have two jugs a 3 and 5 liter jug how do you get 4 liters in a jug.
Answer:
This is one of the more basic questions, but it still appears in job interviews. It is basically impossible not to get the answer correct.
1) First fill the 5 liter jug.
2) Poor water from the 5 liter into the 3 liter one until its full. That leaves 2 liters in the 5 liter,
3) Empty the 3 liter and transfer the 2 liters into it. This leaves 1 liter of space in the 3 liter jug.
4) Then fill the 5 liter jug
5) Then poor 1 liter out of the 5 liter into the 1 liter of empty space in the 3 liter jug.
Done the 5 liter jug has 4 liters in it
c++: Basic Traits
Traits:
In C++ "traits" are basically a group of template classes that provide miscellaneous information about another type or data structure.
'Think of a trait as a small object whose main purpose is to carry information used by another object or algorithm to determine "policy" or "implementation details".'
- Bjarne Stroustrup
Traits are very common in C++. One of the more common ones is the string class its self. The string class uses traits to provide information about internationalization and character encoding. Often they are visible in the code and debugger output as a template parameter that has a default initialization via a second template.
In other cases the use of traits is more normal as in the the class "std::numeric_limits" and the other members of the limits.h header.
Boost also offers many interesting and helpful traits classes as an example here is the "is_void" traits class.
template< typename T >
struct is_void{
 static const bool value = false;
};
template<>
struct is_void< void >{
 static const bool value = true;
};
As you can see this trait template's sole purpose to is provide information about what the input parameter type was. This is only really useful in a parts of the code which the programmer doesn't know what the input type was: Hence inside another template.
For more info refer to:
_URL_
_URL_
The truth about what movitates people
_URL_
Wednesday, June 23, 2010
Three coworkers sharing average salaries
Question:
Three coworkers would like to know their average salary. How can they do it, without disclosing their own salaries?
The key is to scramble the sum with unknown/unshared data. The scramble must be reversible and when reversing it must not effect the sum.
Answer on the web:
So each person adds a random number(Rn) plus there salary(Sn) to the sum(Sum) and hands it to the next one. And then in the second round they each deduce there random number
(round 1)
Sum0 = S1 + R1
Sum1 = S1 + S2 + R1 + R2
Sum2 = S1 + S2 + S3 + R1 + R2 + R3
(round 2)
Sum3 = S1 + S2 + S3 + R2 + R3
Sum4 = S1 + S2 + S3 + R3
Sum5 = S1 + S2 + S3
And final they divide by the number of people
Average(6) = (S1 + S2 + S3)/3
Here is the proof:
For person 1
Starts with:
R1
S1
Sum0 = S1 + R1
Sum2 = S1 + S2 + S3 + R1 + R2 + R3
Sum3


text: PACE (Project Association for Computer and Electronics) is a Computer Club of Advanced College of Engineering and Management founded in 2013 with the intension of providing everything that the students need to explore their ideas, develop new skills related to the field of computer. The main vision of the club is to expose the students to the latest advancements in computer technology and give individuals an opportunity for sharing and extending ideas, views and knowledge in the field of computers and fast changing technology. The club comprises a team of passionate and organized youths who are interested in learning about the advanced technology of the 21st century. We also help in building confidence in students with the help of various programs such as seminars, events and competitions. This Club consists of computer enthusiasts and technically minded hobbyists as the executive members. PACE provides a strong platform for the engineering students to practically implement their innovative ideas in computer for different applications. The Club offers indispensable guidance, workshops and organizes various events for students to explore their full potential.


Piano Lesson, The
1 Nominations
The Piano Lesson poster
1930's Pittsburgh, a brother comes home to claim "my half of the piano", a family heirloom; but his sister is not wanting to part with it. This is a glimpse of the conditions for African-Americans as well as some of the attitudes and influences on their lives. But whether he is able to sell the piano so that he can get enough money to buy some property and "no longer have to work for someone else" involves the story (or lesson) that the piano has to show him.
Season 1
Golden Globe Awards
1996 Nominee
1996 Nominee
Best Actor - Television Motion Picture
Charles S. Dutton


text:
The definition of a bruin is a bear.(noun)
An example of a bruin is the mascot of the Boston hockey team, the Blades.
See Bruin in Webster's New World College Dictionary
Origin: Du, brown
See Bruin in American Heritage Dictionary 4
Origin: Middle English
Origin:, name of the bear in History of Reynard the Fox, translated by William Caxton
Origin: from Middle Dutch bruun, bruin, brown, name of the bear in the Middle Dutch version of the fable; see bher-2 in Indo-European roots.
Learn more about Bruin