text:
Hacking/Attack/Wireless networks

Cracking a wireless network is defeating the security of a wireless local-area network. A commonly used wireless LAN is a Wi-Fi network. Wireless LANs have inherent security weaknesses from which wired networks are exempt.

Two frequent types of vulnerabilities in wireless LANs are those caused by poor configuration, and those caused by weak or flawed security protocols.

Wi-Fi basics

 * is brand name of family protocols based on  standards.
 * is a group of wireless devices which share a service set identifier.
 * 802.11 networks are either infrastructure networks or . By default, people refer to infrastructure networks.

 * Infrastructure networks are composed of one or more (AP) that coordinate the wireless traffic between the nodes and often connect the nodes to a wired network, acting as a bridge or a router.
 * Each access point constitutes a network that is named a basic service set or BSS. A BSS is identified by a, usually the MAC address of the access point.
 * Each access point is part of an extended service set or ESS, which is identified by an or SSID in short, usually a character string.
 * A basic service set consists of one access point and several wireless clients. An extended service set is a configuration with multiple AP and roaming capabilities for the clients. An independent basic service set or IBSS is the ad hoc configuration. This configuration allows wireless clients to connect to each other directly, without an access point as a central manager.
 * AP broadcast a signal regularly to make the network known to clients. They relay traffic from one wireless client to another. AP may determine which clients may connect, and when clients do, they are said to be with the access point. To obtain access to an access point, both the BSSID and the SSID are required.
 * Ad hoc networks have no access point for central coordination. Each node connects in a peer-to-peer way. This configuration is an or IBSS. Ad hoc networks also have an SSID.

802.11 networks use data frames, management frames, and control frames. Data frames convey the real data, and are similar to those of Ethernet. Management frames maintain both network configuration and connectivity. Control frames manage access to the ether and prevent AP and clients from interfering with each other in the ether. Some information on management frames will be helpful to better understand what programs for reconnaissance do.
 * Beacon frames are used primarily in reconnaissance. They advertise the existence and basic configuration of the network. Each frame contains the BSSID, the SSID, and some information on basic authentication and encryption. Clients use the flow of beacon frames to monitor the signal strength of their access point.
 * Probe request frames are almost the same as the beacon frames. A probe request frame is sent from a client when it wants to connect to a wireless network. It contains information about the requested network.
 * Probe response frames are sent to clients to answer probe request frames. One response frame answers each request frame, and it contains information on the capabilities and configurations of the network. Useful for reconnaissance.
 * Authentication request frames are sent by clients when they want to connect to a network. Authentication precedes association in infrastructure networks. Either open or shared key authentication is possible. After serious flaws were found in shared key authentication, most networks switched to open authentication, combined with a stronger authentication method applied after the association phase.
 * Authentication response frames are sent to clients to answer authentication request frames. There is one answer to each request, and it contains either status information or a challenge related to shared key authentication.
 * Association request frames are sent by clients to associate with the network. An association request frame contains much of the same information as the probe request contains, and it must have the SSID. This can be used to obtain the SSID when a network is configured to hide the SSID in beacon frames.
 * Association response frames are sent to clients to answer an association request frame. They contain a bit of network information and indicate whether the association was successful.
 * Deauthentication and disassociation frames are sent to a node to notify that an authentication or an association has failed and must be established anew.

Reconnaissance of wireless networks
Reconnaissance is performed by s and based on aka rfmon of.

is a common method of wireless network reconnaissance. A well-equipped wardriver uses a laptop computer with a wireless card, an antenna mounted on the car, a power inverter, a connected GPS receiver, and a way to connect to the Internet wirelessly. The purpose of wardriving is to locate a wireless network and to collect information about its configuration and associated clients.

Basic tools

 * linssid - GUI
 * wavemon - TUI
 * iwlist scan
 * iw dev $w scan
 * nmcli dev wifi
 * airodump-ng $w

Bettercap
Bettercap is a powerful, easily extensible and portable framework written in Go which aims to offer to security researchers, red teamers and reverse engineers an easy to use, all-in-one solution with all the features they might possibly need for performing reconnaissance and attacking WiFi and other networks.

 * https://www.bettercap.org/modules/wifi/
 * https://www.bettercap.org/modules/ble/
 * https://www.bettercap.org/modules/hid/

inSSIDer
uses the current wireless card or a wireless USB adapter and supports most GPS devices (namely those that use or higher). Its graphical user interface shows MAC address, SSID, signal strength, hardware brand, security, and network type of nearby Wi-Fi networks. It can also track the strength of the signals and show them in a time graph.

Kismet
is a multi-platform wireless network traffic analyzer.

Wireshark
is a packet sniffer and network traffic analyser that can run on all popular operating systems, but support for the capture of wireless traffic is limited. It is free and open source. Decoding and analysing wireless traffic is not the foremost function of Wireshark, but it can give results that cannot be obtained with programs. Wireshark requires sufficient knowledge of the network protocols to obtain a full analysis of the traffic, however.

Analysers of AirMagnet
AirMagnet Laptop Analyser and AirMagnet Handheld Analyser are wireless network analysis tools made by. The company started with the Handheld Analyser, which was very suitable for surveying sites where wireless networks were deployed as well as for finding rogue access points. The Laptop Analyser was released because the hand-held product was impractical for the reconnaissance of wide areas. These commercial analysers probably offer the best combination of powerful analysis and simple user interface. However, they are not as well adapted to the needs of a wardriver as some of the free programs.

Androdumpper
Androdumpper is an Android APK that is used to test and hack WPS Wireless routers which have a vulnerability by using algorithms to hack into that WIFI network. It runs best on Android version 5.0 to 8.0

Airopeek
is a packet sniffer and network traffic analyser made by Wildpackets. This commercial program supports Windows and works with most wireless network interface cards. It has become the industrial standard for capturing and analysing wireless traffic. However, like Wireshark, Airopeek requires thorough knowledge of the protocols to use it to its ability.

KisMac
is a program for the discovery of wireless networks that runs on the OS X operating system. The functionality of KisMac includes GPS support with mapping, SSID decloaking, deauthentication attacks, and cracking.

Penetration to wireless networks
There are two basic types of vulnerabilities associated with WLANs: those caused by poor configuration and those caused by poor encryption. Poor configuration causes many vulnerabilities. Wireless networks are often put into use with no or insufficient security settings. With no security settings – the default configuration – access is obtained simply by association. Without sufficient security settings, and  can easily be defeated. Poor encryption causes the remaining vulnerabilities. Wired Equivalent Privacy (WEP) is defective and can be defeated in several ways. (WPA) and Cisco's (LEAP) are vulnerable to s. Some attacks starts from.

Recent attacks:
 * — security vulnerability. Data in transmit buffers is sent with, zeroed by disassociation. Discovered in 2019.
 * — Key Reinstallation Attacks. Breaks by forcing  reuse. Discovered in 2016.

Wired Equivalent Privacy (WEP)
[1997 — 2004] was the encryption standard firstly available for wireless networks. It can be deployed in 64 and 128 bit strength. 64 bit WEP has a secret key of 40 bits and an of 24 bits, and is often called 40 bit WEP. 128 bit WEP has a secret key of 104 bits and an initialisation vector of 24 bits, and is called 104 bit WEP. Association is possible using a, an key, or a hexadr cracking WEP: the  and the chopping attack. The FMS attack – named after Fluhrer, Mantin, and Shamir – is based on a weakness of the  encryption algorithm. The researchers found that 9000 of the possible 16 million initialisation vectors can be considered weak, and collecting enough of them allows the determination of the encryption key. To crack the WEP key in most cases, 5 million encrypted packets must be captured to collect about 3000 weak initialisation vectors. (In some cases 1500 vectors will do, in some other cases more than 5000 are needed for success.) The weak initialisation vectors are supplied to the (KSA) and the  (PRNG) to determine the first byte of the WEP key. This procedure is then repeated for the remaining bytes of the key. The chopping attack chops the last byte off from the captured encrypted packets. This breaks the / (CRC/ICV). When all 8 bits of the removed byte were zero, the CRC of the shortened packet is made valid again by manipulation of the last four bytes. This manipulation is: result = original XOR certain value. The manipulated packet can then be retransmitted. This method enables the determination of the key by collecting unique initialisation vectors. The main problem with both the FMS attack and the chopping attack is that capturing enough packets can take weeks or sometimes months. Fortunately, the speed of capturing packets can be increased by injecting packets into the network. One or more (ARP) packets are usually collected to this end, and then transmitted to the access point repeatedly until enough response packets have been captured. ARP packets are a good choice because they have a recognizable size of 28 bytes. Waiting for a legitimate ARP packet can take awhile. ARP packets are most commonly transmitted during an authentication process. Rather than waiting for that, sending a deauthentication frame that pushes a client off the network will require that client to reauthenticate. This often creates an ARP packet.

Wi-Fi Protected Access (WPA/WPA2)
was developed because of the vulnerabilities of WEP. WPA uses either a (WPA-PSK) or is used in combination with a  server (WPA-RADIUS). For its encryption algorithm, WPA uses either the (TKIP) or the  (AES). was developed because of some vulnerabilities of WPA-PSK and to strengthen the encryption further. WPA2 uses both TKIP and AES, and requires not only an encryption piece but also an authentication piece. A form of the (EAP) is deployed for this piece. WPA-PSK can be attacked when the PSK is shorter than 21 characters. Firstly, the four-way EAP Over LAN (EAPOL) must be captured. This can be captured during a legitimate authentication, or a reauthentication can be forced by sending deauthentication packets to clients. Secondly, each word of a word-list must be with the Hashed Message Authentication Code – Secure Hash Algorithm 1 and two so called nonce values, along with the MAC address of the client that asked for authentication and the MAC address of the access point that gave authentication. Word-lists can be found at. LEAP uses a variation of Microsoft Challenge Handshake Protocol version 2 (MS-CHAPv2). This handshake uses the Data Encryption Standard (DES) for key selection. LEAP can be cracked with a dictionary attack. The attack involves capturing an authentication sequence and then comparing the last two bytes of a captured response with those generated with a word-list. WPA-RADIUS cannot be cracked. However, if the RADIUS authentication server itself can be cracked, then the whole network is imperilled. The security of authentication servers is often neglected. WPA2 can be attacked by using the WPA-PSK attack, but is largely ineffective.

See also

Aircrack-ng
runs on Windows and Linux, and can crack WEP and WPA-PSK. It can use the Pychkine-Tews-Weinmann and KoreK attacks, both are statistical methods that are more efficient than the traditional FMS attack. Aircrack-ng consists of components. Airmon-ng configures the wireless network card. Airodump-ng captures the frames. Aireplay-ng generates traffic. Aircrack-ng does the cracking, using the data collected by airodump-ng. Finally, airdecap-ng decrypts all packets that were captured. Thus, aircrack-ng is the name of the suite and also of one of the components.

CoWPAtty
CoWPAtty automates the dictionary attack for WPA-PSK. It runs on Linux. The program is started using a, specifying a word-list that contains the passphrase, a dump file that contains the four-way EAPOL handshake, and the SSID of the network.

Void11
Void11 is a program that deauthenticates clients. It runs on Linux.

MAC address filtering and its attack
can be used alone as an ineffective security measure, or in combination with encryption. The attack is determining an allowed MAC address, and then changing the MAC address of the attacker to that address.

See also Changing Your MAC Address

Conclusion
ing of a wireless network is often a stepping stone for penetration testing of the internal network. The wireless network then serves as a so-called entry vector. If WPA-RADIUS is in use at a target site, another entry vector must be investigated.

Prevention and Protection
An unprotected wireless network is extremely insecure. From anywhere within broadcast range, someone can eavesdrop or start using the network. Therefore, the IEEE 802.11 standard for wireless networks was accompanied with Wired Equivalent Privacy (WEP). This security protocol takes care of the following: WEP has been criticized by security experts. Most experts regard it as ineffective by now.
 * authentication: assurance that all participants are who they state they are, and are authorized to use the network
 * confidentiality: protection against eavesdropping
 * integrity: assurance of data being unaltered

In 2004 a draft for a better security protocol appeared, and it was included in the IEEE 802.11 standard in 2007. This new protocol,, uses an AES block cipher instead of the RC4 algorithm and has better procedures for authentication and key distribution. WPA2 is much more secure than WEP, but WEP was still in wide use in 2009.

Many wireless routers also support controlling the MAC addresses of computers that are authorized to use a wireless network. This measure can effectively stop a neighbour from using the network, but experienced intruders will not be stopped. MAC filtering can be attacked because a MAC address can be faked easily.

In the past, turning off the broadcasting of the SSID has also been thought to give security to a wireless network. This is not the case however. Freely available tools exist that quickly discover an SSID that is not broadcast. has also determined that switching off the broadcasting of the SSID leads to less security. Details can be found in Non-broadcast Wireless Networks with Microsoft Windows.

Returning to encryption, the WEP specification at any encryption strength is unable to withstand determined hacking. Therefore, Wi-Fi Protected Access (WPA) was derived from WEP. Software upgrades are often available. The latest devices that conform to the or  standards also support WPA2. (WPA uses the TKIP encryption, WPA2 uses the stronger AES method.) It is recommended to use only hardware that supports WPA or WPA2.

Installing updates regularly, disabling WPS, setting a custom SSID, requiring WPA2, and using a strong password make a wireless router more difficult to crack. Even so, unpatched security flaws in a router's software or firmware may still be used by an attacker to bypass encryption and gain control of the device. Many router manufacturers do not always provide security updates in a timely manner, or at all, especially for more inexpensive models.

WPS currently has a severe vulnerability in which the 8 pin numbered (0-9) passwords being used can easily be split into two sections, this means that each section can be brute-forced individually and so the possible combinations are greatly lessened (10^4 + 10^3, as opposed to 10^7). (WPS utilizes 7 digits + EAN8 checksum ;) This vulnerability has been addressed by most manufacturers these days by using a lock down mechanism where the router will automatically lock its WPS after a number of failed pin attempts (it can take a number of hours before the router will automatically unlock, some even have to be rebooted which can make WPS attacks completely obsolete). Without a lock down feature, a WPA2 router with WPS enabled can easily be cracked in 5 hours using a brute force WPS attack.

SSID's are used in routers not only to identify them within the mass of 2.4, 3.6, 5 and 60 GHz frequencies which are currently flying around our cities, but are also used as a "seed" for the router's password hashes. Standard and popular SSID's such as "Netgear" can be brute forced through the use of s, however the use of a salt greatly improves security against rainbow tables. The most popular method of WPA and WPA2 cracking is through obtaining what's known as a "4 way handshake". when a device is connecting with a network there is a 4-stage authorization process referred to as a 4 way handshake. When a wireless device undergoes this process this handshake is sent through the air and can easily be monitored and saved by an external system. The handshake will be encrypted by the router's password, this means that as opposed to communicating with the router directly (which can be quite slow), the cracker can attempt to brute force the handshake itself using dictionary attacks. A device that is connected directly with the router will still undergo this very process, however, the handshake will be sent through the connected wire as opposed to the air so it cannot be intercepted. If a 4 way handshake has already been intercepted, it does not mean that the cracker will be granted immediate access however. If the password used contains at least 12 characters consisting of both random upper and lower case letters and numbers that do not spell a word, name or have any pattern then the password will be essentially uncrackable. Just to give an example of this, let's just take the minimum of 8 characters for WPA2 and suppose we take upper case and lower case letters, digits from 0-9 and a small selection of symbols, we can avail of a hefty choice of 64 characters. In an 8 character length password this is a grand total of 64^8 possible combinations. Taking a single machine that could attempt 500 passwords per second, this gives us just about 17,900 years to attempt every possible combination. Not even to mention the amount of space necessary to store each combination in a dictionary.

Note: The use of MAC filtering to protect your network will not work as MACs using the network can be easily detected and spoofed.

Detection
A network scanner or sniffer is an application program that makes use of a wireless network interface card. It repeatedly tunes the wireless card successively to a number of radio channels. With a this pertains only to the receiver of the wireless card, and therefore the scanning cannot be detected.

An attacker can obtain a considerable amount of information with a passive scanner, but more information may be obtained by sending crafted frames that provoke useful responses. This is called active scanning or probing. Active scanning also involves the use of the transmitter of the wireless card. The activity can therefore be detected and the wireless card can be located.

Detection is possible with an intrusion detection system for wireless networks, and locating is possible with suitable equipment.

Wireless intrusion detection systems are designed to detect anomalous behaviour. They have one or more sensors that collect SSIDs, radio channels, beacon intervals, encryption, MAC addresses, transmission speeds, and s. Wireless intrusion detection systems maintain a registry of MAC addresses with which unknown clients are detected.

Legality
The Netherlands Making use of someone else's wireless access point or wireless router to connect to the internet – without the owner's consent in any way – is not punishable by criminal law in The Netherlands. This is true even if the device uses some form of access protection. To penetrate someone else's computer without the owner's consent is punishable by criminal law though.

See also
 * (parasitic use of wireless networks to obtain internet access)
 * (parasitic use of wireless networks to obtain internet access)

Crackers and society
There is consensus that computer attackers can be divided in the following groups.
 * Adolescent amateurs. They often have a basic knowledge of computer systems and apply scripts and techniques that are available on the internet.
 * Adult amateurs. Most of them are motivated by the intellectual challenge.
 * Professionals. They know much about computers. They are motivated by the financial reward but they are also fond of their activity.

Naming of crackers
The term hacker was originally used for someone who could modify a computer for his or her own purposes. Hacking is an intrusion combined with direct alteration of the security or data structures of the breached system. The word hacking is often confused with cracking in popular media discourse, and obfuscates the fact that hacking is less about eavesdropping and more related to interference and alteration. However, because of the consistent abuse by the news media, in 2007 the term hacker was commonly used for someone who accesses a network or a computer without authorization of the owner.

In 2011,  stated that the word hacker can mean a computer fanatic, in particular one who by means of a breaks into the computer system of a company, government, or the like. It also denoted that in that sense the word hacker is. Slang words are not appropriate in formal writing or speech.

Computer experts reserve the word hacker for a very clever programmer. They call someone who breaks into computers an intruder, attacker, or cracker.

See also

 * — rogue Wi-Fi access point
 * http://www.wigle.net/ —
 * http://www.wigle.net/ —
 * http://www.wigle.net/ —
 * http://www.wigle.net/ —

title: Hacking/Attack/Wireless networks


text: 19th Century Literature/Printable version

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text: Category:Book:Child Psychology and Digital Technology


text: Internet Fundamentals/Printable version

title: Internet Fundamentals/Printable version


text:
Internet Fundamentals/Search engines

Search engines are used to find specific content on the World Wide Web.

Common search engines as of 2023 include:
 * Google
 * Bing

Read More

 * The Wikibook How To Search

title: Internet Fundamentals/Search engines


text:
Cognitive Science: An Introduction/Non-Emotion Feelings

In other sections we describe perceptions (how we interpret the outside world), interoceptions (how we interpret our own body), conceptual thoughts, and emotions. But there are other things we feel that are harder to classify, but no less real.

Bodily Ownership
You have a body, and you feel that it is yours, and you believe that it is yours. This seems unremarkable until one considers disorders that throw these feelings and beliefs out of whack.

You are not aware of your body directly. Instead, you have a body schema, a representation of your body in your mind that usually matches up pretty well with your actual, physical body. But the body schema can be tricked in various ways. Take, for example, the rubber hand illusion. To make it happen, you have someone put both hands on a table, but one of the hands is covered up so they can't see it. Instead, they can see a rubber hand, near where there real hand is. The experimenter strokes both the rubber hand and the hidden hand in the same way. What happens is that the person often feels that the rubber hand is their own, even though they know, conceptually, that it is not. While the illusion is in place, if you threaten the rubber hand with a knife, the person will react as though a part of their body is being threatened. You can watch videos of this online. What's happening here is that the body schema is affected by perception. The person sees a hand there, and what they feel (the paintbrush) corresponds to what they are seeing. So the body schema "moves" into the rubber hand.

A similar effect happens with certain prostheses. If a blind person uses a cane, they will often feel as though the cane is a part of their body. When the cane is struck, they "sense" the striking in the cane, not in their hand, where their nerve endings actually are. Here, perhaps, their body schema is extending into the cane.

Sometimes, after a hand is amputated, the person will feel that the hand is still there. This is known as phantom limb. The person knows the hand is gone, but they feel it is there, and can tell you if it is in pain, and what position it's in. Here, the hand part of the body schema is still there after the hand it represents is gone.

Patients with somatoparaphrenia feel that some part of their body, say, a leg, isn't theirs. This feeling is accompanied by a belief that it's not theirs (which makes it different from the rubber hand illusion). This belief is maintained even though they can see that their leg is attached, and can feel touch and pain in the alien leg. If the patient has xenomelia, they want the alien leg amputated.

These disorders show that that there is a dissociation between sensory and interoceptive feelings, such as pain and proprioception, the feeling of ownership, and the belief in ownership.

Familiarity
When you look at someone you know, you get a feeling of familiarity. You might think that this is the same thing as perceptually recognizing who they are, but there are disorders people can have that show this isn't the case. In Capcras syndrome, for example, people can see that someone close to them looks identical, but believe that the person is an imposter. The reason for this is that they lost their sense of familiarity.

The opposite disorder is the Fregoli delusion, where people have feelings of familiarity even to people they've never met. These patients believe that strangers are familiar persons wearing disguises.

These two disorders make it clear that the feeling of familiarity can be dissociated from merel perceptual recognition.

Noetic Feelings
Noetic feelings relate to knowing. When you feel you know or don't know something, that's a noetic feeling. Examples of this include the tip-of-your-tongue feeling, when you feel you know the name of something, even though you cannot retrieve it.


text:
User:Leangchhe

= CONSTITUTION OF THE KINGDOM OF CAMBODIA (As Amended) = PREAMBLE

WE, THE PEOPLE OF CAMBODIA Being the heirs of a great civilization, a prosperous, powerful, large and glorious nation whose prestige radiated like a diamond;

Having endured suffering and destruction and having experienced a tragic decline in the course of last two decades;

Having awakened to stand up with resolute determination and commitment to strengthen our national unity, to preserve and defend Cambodia's territory and its precious sovereignty and the prestige of Angkor civilization, to build the nation up to again be an "Island of Peace" Based on a liberal multi-party-democratic system, to guarantee human rights and the respect of law, and to be responsible for progressively developing the prosperity and glory of our nation. WITH THIS RESOLUTE WILL,

 We inscribe the following as the Constitution of the Kingdom of Cambodia:

Article 1:
Cambodia is a Kingdom in which the King shall rule according to the Constitution and the principles of liberal multi-party democracy.

The Kingdom of Cambodia shall be an independent, sovereign, peaceful, permanently neutral and non-aligned country.

Article 2:
The territorial integrity of the Kingdom of Cambodia shall never be violated within its borders as defined in the 1/100,000 scale map made between the years 1933-1953, and internationally recognized between the years 1963-1969.

Article 3:
The Kingdom of Cambodia is an indivisible state.

Article 4:
The motto of the Kingdom of Cambodia is "Nation, Religion, King".

Article 5:
The official language and script is Khmer.

Article 6:
Phnom Penh is the capital city of the Kingdom of Cambodia.

The national flag, anthem and coat-of-arms are defined in Annex 1, 2, and 3.

title: User:Leangchhe


text:
The Legend of Zelda: Link's Awakening/Introduction

The Legend of Zelda: Link's Awakening (Zelda no Densetsu: Yume o Miru Shima in Japan, lit. "The Legend of Zelda: Dreaming Island") is the fourth installment of  series and their first handheld installment. It was released in Japan on June 6, 1993 and arrived in North America in August 1993. The game was directed by Takashi Tezuka, with supervision from Shigeru Miyamoto.

In 1998, Nintendo needed a title to release alongside their latest handheld device, the Game Boy Color. The Legend of Zelda: Link's Awakening is one of several titles that was given a colorized "DX" overhaul to help promote sales. The Legend of Zelda: Link's Awakening DX was more than a simple cash-in; it not only introduced vibrant color and fixed many of the original's glitches, it also included the brand-new Color Dungeon with puzzles centering around the use of color, as well as collectible Photographs compatible with the Game Boy Printer. This time around, Tezuka acted as project supervisor, and Yoshinori Tutiyama as director. It was released in Japan on December 12, 1998 and in America three days later, on December 15. An enhanced remake of the game was released for the Nintendo Switch on September 20, 2019.

The Legend of Zelda: Link's Awakening received some criticism for abandoning the traditional setting of Hyrule, but was still a solid success. Unlike his past adventures, this time around Link washes up on a mysterious island, and is awakened by a girl who resembles Princess Zelda. The game retains the top-down perspective employed in The Legend of Zelda and The Legend of Zelda: A Link to the Past, as well as a number of mechanics from the latter.


text: Web Development/Printable version

title: Web Development/Printable version


text: African American Vernacular English/Printable version


text: Ancient Greek/Printable version

title: Ancient Greek/Printable version


text:
Web Development/Setting up a reasonable web development budget

Bare Minimums
It's technically possible to host a website on a number of free services. These have a number of restrictions, typically including mandatory adverts, tracking cookies for your users, being hosted on a predetermined domain instead of your own, and being either limited to a static site or to a particular technology stack.

Optimal Minimum
A domain name with shared hosting is the next step up.

Domain names are available in a variety of top level domains, which has a large impact on yearly costs. A .com domain which has not yet been registered will typically cost between $10-$15 dollars a year (In 2021).

Commercial
A dedicated server or VPS is a step up over shared hosting, both in terms of performance and security.

Such a service might cost $100 or more depending on your needs.

Other costs may include commercial SSL certificates, software support, and other fees.

Enterprise
For huge websites, the kinds of websites which are household names, costs can become quite large. Fortunately the vast number of websites will never reach the expenses incurred by such sites.


text:
Web Development/Finding investors, advertisers, and supporters

Investors
Investors can be a great source of startup revenue, if you can convince them your website is worth their while.

If the website is for an existing business, convincing an investor to pitch in to cover the cost of professional web development should be fairly easy, as in many cases a website can be a great marketing tool.

Typically investors will not be interested in funding personal sites. Investors want a return on their investment, so unless your website is going to make money, either on its own or by supporting a separate business.

Advertising on your Site
If you don't charge for content, then web advertising may be a good option for you to generate revenue. You can use an ad network to deliver ads, or you can work directly with clients to advertise on your site. Different services and clients will give different rates, both for number of views, and for number of clicks.

Advertising on your website is a strategy which must be done with careful consideration for your users. If the advertisements on your site are obnoxious, users may leave.

Some website categories are generally expected not to have commercial advertising at all, because the presence of advertisements would call into question the neutrality of the institution. Such websites include government websites, websites of schools and universities, websites for churches and religious institutions, websites for the military, and other similar categories.

To a lesser extent, advertising is also disfavored on certain commercial sites as well. On industry and commercial websites, you don't want to risk loosing a enterprise sale worth thousands or even millions because an advert struck a client the wrong way. For the same reason certain mass market customer facing websites generally solely advertise in house, because the website itself serves as an advertisement, and the potential for an ad to distract, detract, or otherwise harm the customer experience is too great.


text:
LMIs in Control/Applications/F16 Longitudinal Stabilitzation

F-16 Longitudinal Stabilization using Hinf Output Feedback

The linearized longitudinal dynamics of the F-16 aircraft are considered in this example. The nonlinear 6DOF model is linearized using straight-and-level flight conditions of:

$$ \begin{align} V = 502 ft/s \\ \bar{q} = 300psf \\ X_{cg} = 0.35\bar{c} \\ \delta_{trim} = -0.7588deg \end{align} $$

See chapter 3 of [] for further details.

The System
The state-space representation for the linearized longitudinal dynamics can be written as follows:

$$ \begin{align} \dot{x}(t) &= Ax(t) + B_{1}w(t) + B_{2}u(t) \\ y(t) &= C_{1}x(t) + D_{11}w(t) + D_{12}u(t) \\ z(t) &= C_{2}x(t) + D_{21}w(t) + D_{22}u(t) \\ u(t) = Ky(t) \\ \end{align} $$

where $$ x = [V \quad \alpha \quad \theta \quad q]^{\text{T}}$$, $$ u = \delta $$, $$ w = \delta_{cmd} $$, and $$ z = [a_n \quad (\delta_{cmd} - \delta)]^{\text{T}} $$ are the state variable, control input, disturbance, and regulated output vectors, respectively. In this case, $$ V $$ is velocity (ft/s), $$ \alpha $$ is angle of attack (rad), $$ \theta $$ is pitch (rad), $$ q $$ is pitch rate (rad/s), $$ \delta $$ is elevator deflection with respect to trimmed deflection (rad), $$ \delta_{cmd} $$ is commanded elevator deflection with respect to trimmed deflection (rad), and $$ a_n $$ is normal acceleration at the pilot location (ft/s^2).

The Data
For the linearization used, the above matrices are:

$$ \begin{align} A = \begin{bmatrix} -1.9311e-2 &&  8.8157 && -3.217e1 && -5.7499e-1 \\ -2.5389e-4 &&  -1.0189 &&  0 &&  9.0506e-1 \\ 0 &&        0 &&  0 &&  1 \\     2.9465e-12 && 8.2225e-1 &&  0 && -1.0774 \end{bmatrix} \end{align} $$

$$ B_{1} = \begin{bmatrix} 1.737e-1 \\ -2.1499e-3 \\ 0 \\   -1.7555e-1 \end{bmatrix} $$

$$ B_{2} = \begin{bmatrix} 1.737e-1 \\ -2.1499e-3 \\ 0 \\   -1.7555e-1 \end{bmatrix} $$

$$ \begin{align} C_1 = \begin{bmatrix} 0 && 5.729578e1 && 0 &&         0 \\ 0 &&         0 && 0 && 5.729578e1 \end{bmatrix} \end{align} $$

$$ \begin{align} C_2 = \begin{bmatrix} 0.003981 && 15.88 && 0 && 1.481 \\ 0 && 0 && 0 && 0 \\ \end{bmatrix} \end{align} $$

$$ D_{11} = D_{12} = 0 $$

$$ D_{21} = \begin{bmatrix} 0 \\ 1 \end{bmatrix} $$

$$ D_{21} = \begin{bmatrix} 0.03333 \\ -1 \end{bmatrix} $$

The LMI: Optimal Output Feedback $$H_{\infty}$$ Control LMI
The following are equivalent.

1) There exists a $$\hat{K}=\begin{bmatrix} A_K & B_K \\ C_K & D_K \end{bmatrix}$$ such that $$||S(K,P)||_{H_{\infty}}<\gamma$$

2) There exists $$X_1$$, $$Y_1$$, $$Z$$, $$A_n$$, $$B_n$$, $$C_n$$, $$D_n$$ such that

 * $$\begin{bmatrix}

X_{1}     & I \\ I         & Y_{1} \end{bmatrix} > 0 $$
 * $$\begin{bmatrix}

AY_{1}+Y_{1}A^{\text{T}}+B_{2}C_{n}+C_{n}B_{2}^{\text{T}} & *^{\text{T}} & *^{\text{T}} & *^{\text{T}} \\ A^{\text{T}}+A_{n}+(B_{2}D_{n}C_{2})^{\text{T}} & X_{1}A+A^{\text{T}}+B_{n}C_{2}+C_{2}^{\text{T}}B_{n}^{\text{T}} & *^{\text{T}} & *^{\text{T}} \\ (B_{1}+B_{2}D_{n}D_{21})^{\text{T}} & (X_{1}B_{1} + B_{n}D_{21})^{\text{T}} & -\gamma I & *^{\text{T}}\\ C_{1}Y_{1}+D_{12}C_{n} & C_{1}+D_{12}D_{n}C_{2} & D_{11}+D_{12}D_{n}D_{21} & -\gamma I\\ \end{bmatrix} < 0 $$

Conclusion:
Using this problem formulation, an output controller $$\hat{K}$$ can be found that attenuates normal acceleration and tracks reference elevator deflection command.


text:
LMIs in Control/Matrix and LMI Properties and Tools/Dilation

Dilation
Matrix inequalities can be dilated in order to obtain a larger matrix inequality. This can be a useful technique to separate design variables in a BMI (bi-linear matrix inequality), as the dilation often introduces additional design variables.

A common technique of LMI dilation involves using the projection lemma in reverse, or the "reciprocal projection lemma." For instance, consider the matrix inequality

$$ \begin{bmatrix} \bold{PA}+\bold{A^TP}-\bold{P} & \bold{P}\\ * & \bold{-P}\end{bmatrix} <0, $$

where $$\bold{P}\in\S^{n\times m}$$, $$\bold{A}\in\R^{n \times n}$$, with $$\bold{P}>0.$$This can be rewritten as

$$ \begin{bmatrix} \bold{A^T} & \bold{1} & \bold{0} \\ \bold{1} & \bold{0} & \bold{1}\end{bmatrix} \begin{bmatrix} \bold{0} & \bold{P} & \bold{0} \\ \begin{bmatrix} \bold{A} & \bold{1}\\ \bold{1} & \bold{0} \\ \bold{0} & \bold{1} \end{bmatrix}<0. $$                  (1)
 * & \bold{-P} & \bold{0}\\
 * &*&\bold{-P}\end{bmatrix}

Then since $$\bold{P}>0,$$

$$ \begin{bmatrix} \bold{-P} & \bold{0}\\ * & \bold{-P}\end{bmatrix}<0, $$

which is equivalent to

$$                           \begin{bmatrix} \bold{0} & \bold{1} & \bold{0} \\ \bold{0} & \bold{0} & \bold{1}\end{bmatrix} \begin{bmatrix} \bold{0} & \bold{P} & \bold{0} \\ \begin{bmatrix} \bold{0} & \bold{0}\\ \bold{1} & \bold{0} \\ \bold{0} & \bold{1} \end{bmatrix}<0. $$                       (2)
 * & \bold{-P} & \bold{0}\\
 * &*&\bold{-P}\end{bmatrix}

These expanded inequalities (1) and (2) are now in the form of the strict projection lemma, meaning they are equivalent to

$$\bold{\Phi}(\bold{P})+\bold{G}(\bold{A})\bold{VH^T}+\bold{HV^TG^T}(\bold{A}),$$                                    (3)

where $$N(\bold{G^T}(\bold{A}))=R(\bold{N}_G(\bold{A})), N(\bold{H^T})=R(\bold{N}_H),$$and $$V\in\R^{n\times n}.$$ By choosing

$$                           \bold{G}(\bold{A})=\begin{bmatrix}\bold{-1}\\ \bold{A^T}\\ \bold{1} \end{bmatrix}, \bold{H}=\begin{bmatrix} \bold{1} \\ \bold{0} \\ \bold{0} \end{bmatrix}, $$

we can now rewrite the inequality (3) as

$$ \begin{bmatrix} -(\bold{V}+\bold{V^T}) & \bold{V^TA}+\bold{P} & \bold{V^T}\\ \end{bmatrix}<0, $$
 * & \bold{-P} & \bold{0}\\
 * & * & \bold{-P}

which is the new dilated inequality.

Examples
Some useful examples of dilated matrix inequalities are presented here.

Example 1

Consider matrices $$\bold{A,G}\in \R^{n\times n}, \bold{\Delta} \in \R^{m\times m}, \bold{P}\in \S^n, \delta_1, \delta_2, a, b \in \R_{>0},$$where $$\bold{P}>0$$and $$b=a^{-1}.$$ The following matrix inequalities are equivalent:

$$\bold{AP}+\bold{PA^T}+\delta_1\bold{P}+\delta_2\bold{APA^T}+\bold{P\Delta^T\Delta P}<0;$$

$$ \begin{bmatrix} \bold{0}&\bold{-P}&\bold{P}&\bold{0}&\bold{P\Delta^T}\\ \end{bmatrix}+He( \begin{bmatrix} \bold{A}\\ \bold{1}\\ \bold{0}\\ \bold{0}\\ \bold{0}\\ \end{bmatrix} \bold{G} \begin{bmatrix} \bold{1} & -b\bold{1} & b\bold{1} & \bold{1} & b\bold{\Delta}^T \end{bmatrix})<0. $$
 * &\bold{0}&\bold{0}&\bold{-P}&\bold{0}\\
 * &*&-\delta_1^{-1}\bold{P}&\bold{0}&\bold{0}\\
 * &*&*&-\delta_2^{-1}\bold{P}&\bold{0}\\
 * &*&*&*&\bold{-1}\\

Example 2

Consider matrices $$\bold{A, V} \in \R^{n\times n}, \bold{P, X} \in \S^n, \bold{B} \in \R^{n\times m}, C\in \R^{p\times n}, \bold{D}\in\R^{p\times m}, \bold{R}\in\S^m,$$and $$\bold{S}\in\S^p,$$where $$\bold{P, R, S, X}>0.$$The matrix inequality

$$ \begin{bmatrix} -\bold{V}-\bold{V^T} & \bold{VA}+\bold{P} & \bold{VB} & \bold{0} & \bold{V}\\ \end{bmatrix}<0 $$
 * & -2\bold{P}+\bold{X} & \bold{0} & \bold{C^T} & \bold{0}\\
 * & * & -\bold{R} & \bold{D^T} & \bold{0}\\
 * & * & * & -\bold{S} & \bold{0}\\
 * & * & * & * & -\bold{X}\\

implies the inequality

$$ \begin{bmatrix} \bold{PA}+\bold{A^TP} & \bold{PB} & \bold{C^T}\\ \end{bmatrix} $$
 * & -\bold{R} & \bold{D^T}\\
 * & * & -\bold{S}

Example 3

Consider matrices $$\bold{A, V} \in \R^{n\times n}, \bold{Q, X} \in \S^n, \bold{B} \in \R^{n\times m}, C\in \R^{p\times n}, \bold{D}\in\R^{p\times m}, \bold{R}\in\S^m,$$and $$\bold{S}\in\S^p,$$where $$\bold{Q, R, S, X}>0.$$The matrix inequality

$$ \begin{bmatrix} -\bold{V}-\bold{V^T} & \bold{V^TA^T}+\bold{Q} & \bold{0} & \bold{V^TC} & \bold{V^T}\\ \end{bmatrix}<0 $$
 * & -2\bold{Q}+\bold{X} & \bold{B} & \bold{0} & \bold{0}\\
 * & * & -\bold{R} & \bold{D^T} & \bold{0}\\
 * & * & * & -\bold{S} & \bold{0}\\
 * & * & * & * & -\bold{X}\\

implies the inequality

$$ \begin{bmatrix} \bold{AQ}+\bold{QA^T} & \bold{B} & \bold{QC^T}\\ \end{bmatrix} $$
 * & -\bold{R} & \bold{D^T}\\
 * & * & -\bold{S}

Related Pages

 * Projection Lemma - The projection lemma.
 * Reciprocal Projection Lemma - The reciprocal projection lemma.


text:
Oberon/ETH Oberon/Tutorial/Compress

Compression and Archiving Tools

[ Text | Contents | Index | Master index]

Tutorial objective
Learn how to handle or create compressed files and archive files distributed on diskette, by FTP and by e-mail.

Estimated time: 20 minutes.

Compress
Compress compresses several files using the LZSS compression technique and packs them into a single archive file. An archive (file) is portable among all Oberon platforms. By convention, the last part of an archive name should be Arc. A file having a file name extension .Arc can be opened directly with the command Desktops.OpenDoc (see below).

Caution: An Oberon archive is a binary file. To send it by e-mail it must be processed by the AsciiCoder.CodeFiles command.

Principle of operation
LZSS uses a dictionary-based compression scheme: it uses previously seen text as a dictionary and replaces phrases in the input text with pointers into the dictionary to achieve compression. The LZSS compression algorithm is highly asymmetrical. The compression routine is fairly complicated and does quite a bit of work. In comparison, the expansion code is extremely simple and has little work to do. This makes LZSS an excellent choice for data that needs to be compressed once and expanded many times.

More information on the LZSS compression technique can be found in:
 * The Data Compression Book
 * Mark Nelson
 * M & T Publishing - ISBN 0-13-202854-9

Compress performs the same functions as the common Unix programs compress and uncompress, together with the Unix tape archiver tar. TAR simply takes a group of files and combines them into a single file, and does not perform any compression.

Note the difference of strategy between Unix and Oberon. A Unix .tar.Z file is a compressed (tape) archive. An Oberon archive contains individually compressed files, which makes it easy to add, extract, or delete files in an archive. As a result, the format of an Oberon archive is not compatible with that of a file produced by the UNIX utility.

Maintaining an archive document
Maintenance work on an archive file starts by opening the document with the command Desktops.OpenDoc. Try this example using a file name Archive.Arc:
 * Desktops.OpenDoc Archive.Arc

This opens a document viewer of that name, displaying a directory of the files contained in the archive. If the archive does not yet exist, it is automatically created. The same result can be obtained by executing the Compress.Directory command, described below. Maintenance work can be comfortably performed with the help of the command buttons in the menu bar. Each button in the title bar, except [Close], executes a command defined in the Compress module:
 * {| style="border-collapse: collapse; line-height:0.96rem;"

These commands are described below.
 * [Open ^]
 * Compress.Open ^
 * [Add ^]
 * Compress.Add ^
 * [Extract ^]
 * Compress.Extract ^
 * [Delete ^]
 * Compress.Delete ^
 * }
 * [Delete ^]
 * Compress.Delete ^
 * }
 * }

The compress commands are collected in the Compress.Tool.

Display archive directory - Compress.Directory
Compress.Directory [\d] (archiveName | ^) opens a text viewer named archiveName listing the names of the files contained in the archive. If the archive does not yet exist, it is automatically created. When the option \d is present, additional information is given for each file: date and time when added to the archive, compressed size in bytes, and size in percent of the original uncompressed file.

Add a list of files - Compress.Add
Compress.Add archiveName ({fileName} ~ | ^) compresses and adds the named files to the named archive. If a file with a matching name already exists, its name is suffixed with a sequence number, as is shown here: if Char.Mod exists, Char.Mod0 is added.

Extract all files - Compress.ExtractAll
Compress.ExtractAll archiveName extracts and decompresses all the files from the named archive, placing them in the current directory. Caution: If a file with a matching name already exists, it is overwritten. A warning message is written to the Oberon log.

Extract a list of files - Compress.Extract
Compress.Extract archiveName ({fileName} ~ | ^) extracts and decompresses the named files from the named archive, placing them in the current directory. Caution: If a file with a matching name already exists, it is overwritten. A warning message is written to the Oberon log.

Delete a list of files - Compress.Delete
Compress.Delete archiveName ({fileName} ~ | ^) deletes the named files from the named archive.

Open a file - Compress.Open
Compress.Open archiveName (fileName | ^) opens a document viewer named fileName displaying the named file in the named archive. Use this command if you wish to display the contents of one of the compressed file without actually creating (or replacing) the file in the current directory.

Definitions.Arc - An example of archive
Definitions.Arc is an important and central archive in Oberon, because it is the information repository in which Watson may be requested to search module definitions. An alternative way to display a module definition stored in that archive, is to display its directory with Desktops.OpenDoc Definitions.Arc, to select a name in the list and to click on the [Open ^] button in the title bar, or to use the Compress.Open command.

AsciiCoder encoder/decoder
The AsciiCoder encodes and decodes a text or the most recently selected text, also including gadgets, appearing in a document viewer. It can also be used to encode and decode arbitrary files. The data stream generated by encoding is made only of printable ASCII characters and is apt to be sent by electronic mail. It is always presented in a text viewer where it can be edited to become a part of an e-mail message for instance. In addition, the encoded data is preceded by the adequate command for decoding it, that is AsciiCoder.DecodeText or AsciiCoder.DecodeFiles according to the case. The decoding command will automatically obtain the information on the amount of information to decode, i.e. it knows where the encoded data ends. An Oberon user who receives such an e-mail, can immediately decode the information.

Encode a text - AsciiCoder.CodeText
AsciiCoder.CodeText [%] (* | @) encodes the text, including gadgets, of the marked viewer (*), or if the command is followed by @, the text contained in the most recent selection. When the % option is present, the text is compressed at the same time. A document viewer named "AsciiCoder.CodeText" is automatically opened. It presents the encoded data preceded by an appropriate AsciiCoder.DecodeText [%] command.

Encode a list of files - AsciiCoder.CodeFiles
AsciiCoder.CodeFiles [%] ({fileName} ~ | ^) encodes all the files named in the list or all the files named in the selection. When the % option is present, the files are compressed at the same time. A document viewer named "AsciiCoder.CodeFiles" is automatically opened. It presents the encoded data preceded by an appropriate AsciiCoder.DecodeFiles [%] {fileName} ~ command.

Decode a text - AsciiCoder.DecodeText
AsciiCoder.DecodeText [%] (text | @) decodes the Ascii encoded text which follows the command, or the text starting at the beginning of the most recent selection. A document viewer named "AsciiCoder.DecodeText" is automatically opened, presenting the decoded information. When the % option is present, the text is expanded at the same time.

Decode a list of files - AsciiCoder.DecodeFiles
AsciiCoder.DecodeFiles [%] ({fileName} ~ text | @) decodes the Ascii encoded text which follows the command, or the text starting at the beginning of the most recent selection. The contained files are written in the current directory. Existing files are not overwritten since they are first renamed to .Bak files. The file names must appear at the beginning of the selection, ahead the coded data. The command AsciiCoder.CodeFiles takes care of that. When the % option is present, the files are expanded at the same time.

The Desktops.OpenDoc AsciiCoder.Tool presents in a handkerchief a useful collection of the commands just described, in all variants.

Base64 encoder/decoder
The Base64 module encodes and decodes a file, even including gadgets. The data stream generated by encoding is made only of 64 ASCII characters and is apt to be sent by electronic mail. It is always presented in a text viewer where it can be edited to become a part of an e-mail message for instance.

Encode a file - Base64.Encode
Base64.Encode fileName encodes the named file. A document viewer named "Encode" is automatically opened. It presents the encoded data.

Decode a text and store it in a file - Base64.Decode
Base64.Decode fileName (~ | ^) decodes the encoded text which follows the fileName ~, or if the fileName is followed by ^, the text starting at the most recent selection. The result is written in the named file in the current directory. Caution: If a file with a matching name exists on the hard disk, it is overwritten.

UUDecoder
Unix uuencoded files are frequently posted to Usenet newsgroups or sent as mail messages. A uuencoded file is a binary file that has been encoded as a text file by the Unix uuencode program. Note that this transformation inflates the binary file rather than compress it!

If you happen to receive such a file, you may decode it with the UUDecoder.Decode command which is documented in the UUDecoder.Tool and below.

Decode a text - UUDecoder.Decode
UUDecoder.Decode begin .... | @ decodes the text which follows the command, or the text starting at the beginning of the most recent selection.

Decode a list of files - UUDecoder.Decode
UUDecoder.Decode {fileName} ~ | ^ decodes all the files named in the list or all the files named in the selection.

What's next?
Distribute your custom developed Oberon extensions in compressed format or as Oberon archive files, by e-mail or by uploading them by FTP on an FTP server for instance.

Index
A

archive AsciiCoder.CodeFiles AsciiCoder.CodeText AsciiCoder.DecodeFiles AsciiCoder.DecodeText AsciiCoder.Tool AsciiCoder

B

Base64.Decode Base64.Encode Base64

C

compress (Unix) Compress.Add Compress.Delete Compress.Directory Compress.ExtractAll Compress.Extract Compress.Open Compress.Tool compress

D

Definitions.Arc

E

encode/decode

T

tar (Unix)

U

uudecode (Unix) UUDecoder.Decode UUDecoder.Tool

Revised on July 6, 1996 Installed on 30 05 1997

title: Oberon/ETH Oberon/Tutorial/Compress


text:
Cookbook:Oatmeal Stout Brownies

| Dessert

This recipe, created by Joe Stutler, was a national finalist in the 2006 Cooking With Beer Challenge. The malt and oats in the beer enhance the flavor of the chocolate in these delicious brownies. Not overly cake-ey, not overly fudge-ey, the texture is nicely balanced. They're also decadently chocolate, and surprisingly light (thanks to the eggs). Great with a fruity beer, such as a lambic (Framboise, yum!).

Ingredients

 * 1 cup all-purpose flour
 * ¾ cup unsweetened cocoa powder
 * ¼ teaspoon salt
 * 6 tablespoons unsalted room temperature butter, cut into cubes
 * 8 ounces dark bittersweet chocolate, chopped
 * ¾ cup white chocolate chips
 * 4 large eggs, at room temperature
 * 1 ½ cup superfine or granulated sugar
 * 1 ¼ cups (10 ounces) oatmeal stout beer (room temperature)
 * 1 cup semi-sweet chocolate chips

 * 1 package (8 ounces) cream cheese, softened
 * ⅓ cup superfine or granulated sugar
 * ½ teaspoon vanilla extract
 * 1 large egg

Procedure

 * 1) Preheat the oven to 375°F. Line a 9 x 13-inch baking pan with nonstick foil (or grease and flour, or parchment paper…your call).
 * 2) In a medium bowl, whisk together flour, cocoa powder, and salt until evenly combined. Set aside.
 * 3) Melt butter, bittersweet chocolate, and white chocolate chips in a double-boiler over very low heat, stirring constantly until melted. Remove from heat.
 * 4) In a large mixing bowl, beat eggs and sugar on high speed until light and fluffy, about 3 minutes. Add melted chocolate mixture, beating until combined.
 * 5) Beat reserved flour mixture into melted chocolate mixture. Whisk in stout beer. The batter will seem a bit thin. Pour into prepared baking pan. Drop semisweet chocolate chips evenly on top of batter (some will sink in).
 * 6) Beat cream cheese in medium bowl with electric mixer on medium speed until smooth. Gradually beat in sugar. Beat in vanilla and 1 egg just until blended.
 * 7) Pour cream cheese mixture over brownie batter in pan; cut through mixture with knife several times for marbled design.
 * 8) Bake for 25–35 minutes on center rack in the oven, until a toothpick inserted in the center comes out almost clean.
 * 9) Let brownies cool, uncovered, to room temperature. Dust with confectioners' sugar before serving if desired.

Notes, tips, and variations

 * Makes 18 (2x3 inch) to 24 (2x2 inch) brownies. For finger-food/snack portions you could halve these dimensions to get 36–48 brownies.
 * Plating suggestion: swirl a raspberry lambic reduction sauce (12 oz lambic reduced to half, 4–6 oz seedless raspberry purée, 2–4 oz turbinado sugar, ½–1 teaspoon cornstarch) on the plate; garnish with mint leaves, raspberries, and lemon zest.

title: Cookbook:Oatmeal Stout Brownies


text:
User:VW 101114461/sandbox

Write a question and its solution that estimates the surface temperature of the sun given that its wavelength of maximum intensity is 504 nm.

Question
A blackbody material is defined by its ability to absorb ALL radiation that falls onto it. When the blackbody is at constant temperature, the distribution of its emission frequency can be determined by assuming its only direct relation is to temperature. Furthermore, the frequency of the electromagnetic radiation can also be measured in units of wavenumber $$\text{cm}^{-1}$$.

title: User:VW 101114461/sandbox


text:
LMIs in Control/pages/LMI for Attitude Control of BBT Missiles

LMI for Attitude Control of BTT Missles, Roll Channel

For this dynamic model of a Bank-to-Turn (BTT) missile, we will consider a simplified attitude system model for the roll channel in the system. We aim to achieve a non-rotating motion of missiles. It is worthwhile to note that the attitude control design for the pitch channel and the yaw/roll channel can be solved exactly in the same way while representing matrices of the system are different.


text: An Introduction to Civilizations/Printable version


text: Pakistani History/Printable version

title: Pakistani History/Printable version


text: United Nations History/Printable version


text: Tatworth Village/Printable version

title: Tatworth Village/Printable version


text:
User:Michael Ten

Java Programming

Meta

title: User:Michael Ten


text:
User:Nse7jg/sandbox

Anti-Piracy (more formally referred to as Copyright Infringement) pertains to any use, reproduction and/or distribution of works protected by copyright law without the permission of the copyright owner. As media began to transition to digitalization,

History
Anti-piracy

title: User:Nse7jg/sandbox


text: Category:Book:An Introduction to Econometrics


text:
Talk:Antipiracy

General Structure
We can throw together a small bulleted list here of structure. Feel Free to make edits.

Antipiracy

 * Abstract (no header)
 * Introduction
 * History
 * Methods of Anti-Piracy
 * Analog Hole
 * Commercial Effects of Piracy
 * Major Monetary Losses
 * Small Creators
 * Opposition to Anti-Piracy Software
 * Abuse of DRM
 * Piracy as a method of regulation
 * Lower Income Demographic
 * Conclusion
 * References

nse7jg
(very rough draft)

Piracy (more formally referred to as Copyright Infringement) pertains to any use, reproduction and/or distribution of works protected by copyright law without the permission of the copyright owner. The digitization of media and the advent of peer-to-peer file sharing, piracy has become very accessible to the average individual. Entire websites, such as PirateBay, are built around the illegal distribution of copyrighted material. Many companies, organizations and individuals suffer (large financial losses) due to the unauthorized redistribution of their works. It has produced a movement in which many companies are attempting to find different measures in which to prevent rampant piracy of their works. The movement itself is referred to as Antipiracy.

Lentis chapter or standalone book?
Is this meant to be a chapter in Lentis or a standalone Wikibook? Thank you for your contribution! --Mbrickn (discuss • contribs) 05:32, 21 November 2021 (UTC)

title: Talk:Antipiracy


text: Ultimate/Printable version

title: Ultimate/Printable version


text: Debate/Printable version

title: Debate/Printable version


text:
User:Mbrickn/Books I have split

I've been working on addressing Template:Split requests, as well as making large single page books into a more standard wikibooks format. (Typically also creating a printable version for those who prefer the single page format.)

Full Splits

 * History of Creative Commons
 * The wave of a photon
 * Slovak
 * Tarot Card Reading
 * TripleA
 * Ancient Domains of Mystery / Ancient Domains of Mystery
 * The Final Fantasy Legend
 * DBMS
 * SQL\400
 * Psychiatric Disorders
 * Genesis Programming
 * Comparative Politics
 * Voice over IP
 * Electric Motors And Generators
 * Marxism, Communism, and Socialism
 * Telescope Making
 * Study Skills
 * Learning Clojure
 * Maxima
 * Ship Resistance
 * Starting and Running a Business
 * ZCash mining GPU Comparison
 * TCAT Rider Guide
 * Fundamentals of Airports
 * Guide to Electrical Equipment for Travelers
 * Yubnub
 * Heliciculture
 * Alien hominid guide - Book since renamed to Alien Hominid
 * WikidataMap user guide
 * Dogs
 * Plains Cree
 * Tulu
 * Flight Attendant Manual
 * Semantic Web
 * Scriptol
 * NETSquirrel - guidelines
 * Somali
 * PostScript FAQ
 * AutoCAD
 * Weatherization
 * National Etiquette Differences in Europe
 * PyTorch
 * Robotics and the World
 * Ultimate
 * Oliver Twist
 * The History of Trench Wars
 * 68000 Assembly
 * Wikis for Retail Store Managers
 * Wild ARMs 2
 * Chrono Cross
 * Dark and Light
 * Mega Man X
 * Pokémon Red and Blue
 * Quest for Glory
 * Chibi-Robo!
 * Metroid Prime
 * Nintendogs
 * Star Fox: Assault
 * Super Monkey Ball
 * The Final Fantasy Legend
 * X-COM: Apocalypse Strategy Guide
 * Sonic R
 * Wii Sports
 * Paper Mario: The Thousand-Year Door
 * ETF Mapping
 * Sonic Heroes
 * Metal Gear Solid 5: The Phantom Pain
 * Paper Mario
 * History of Woodford and the Surrounding Community
 * Mega Man (classic series)
 * Golf
 * A-level Critical Thinking

Intro to Subpage

 * The Arab Identity
 * The Legend of Zelda: Link's Awakening
 * Baroque Macedonia and the Macedonian Revolts
 * Active Learning In Virtual Environment
 * A Level Computer Science Programming Guide
 * Creating a simple 3D game engine in XNA
 * OpenVOGEL
 * Final Fantasy XI
 * Lineage 2 - old ID - Lineage_2&oldid=3959254
 * History of Western Theatre: 17th Century to Now
 * Introduction to model railways
 * Pokémon Ruby and Sapphire
 * Wario's Woods
 * Programming in LOLGraphics 3.4
 * Dog Care

Other Partial

 * TI-Basic Programs
 * Market Influences on Clinical Trials
 * Zelda II: The Adventure of Link / Zelda II: The Adventure of Link
 * Final Fantasy XII
 * Grand Theft Auto: Liberty City Stories
 * Final Fantasy V
 * Go Programming Language Cookbook
 * International Relations
 * Van Dwelling
 * Grand Theft Auto: Vice City
 * Cornish
 * Pokémon Crystal
 * Web App Development with Google Apps Script
 * Programming for the consultant
 * Onondaga
 * Splinter Cell
 * Animal Crossing
 * Xenosaga
 * Star Wars Chess
 * Pokémon FireRed and LeafGreen
 * Final Fantasy V
 * Xbox 360
 * College Survival Guide - I could have sworn I split this, but I guess not?
 * TOC - The Story of Rhodesia/Printable version (Alternate)

For completion

 * Subpages in User:Mbrickn

title: User:Mbrickn/Books I have split


text:
Talk:Sonic Heroes

Note
Subpages originated from main page. --Mbrickn (discuss • contribs) 07:29, 21 November 2021 (UTC)

title: Talk:Sonic Heroes


text: Agriculture/Printable version

title: Agriculture/Printable version


text:
Web Development/The common misconception: visits vs. hits

Collecting metrics about your website usage is not only incredibly important, it's also incredibly easy to mess up. A common tripping point is the definition of hits and visits.

It is important to differentiate the terms visits and hits. A hit is when a computer requests your website. It says nothing about how somebody used a site, and hits are often made by non-human actors.

A visit is when a user uses your website for real. A visit can include multiple hits. All visits are at least one hit, but not all hits are visits.


text:
Web Development/Staying updated: why people come back

People are creatures of habit, they love coming back to a place to find new things. However when people return to a place expecting new things, only to find that nothing has changed, they'll get frustrated and eventually will move on to new more interesting sites.

When to update
For news websites, blogs, company pages, and more, an updating and evolving front page is critical.

When not to update
Not all pages on your site need to be continuously updated. If you're updating a particularly old page, it may be worthwhile to note any changes in the bottom of the page as an addendum, to make it clear to readers what changed since they last saw it.


text:
Web Development/The design phase and the one-second test

Paper Prototypes
One of the easiest ways to start designing your website is old fashioned, but easy - making a paper prototype.

Sketch out all the details without worrying about your art skills. The purpose of this is to create designs with speed.


text:
Web Development/Enticing advertisers

Just about any website can host some kind of advert on it. However, both advertisers and users prefer that you serve ads which are appropriate to your site. For example, if your website reviews soap, or even a broader category such as personal hygiene products, a soap company may be interested in advertising on your site. Some ad networks automate this process, and it is of course possible to do manually.

title: Web Development/Enticing advertisers


text:
Web Development/An alternative to closing: going open-source

Have an idea that you'd like to pass on the torch to? Consider making your site open source! Someone else can carry on your work legally if you choose to open source your website.


text: Authoring Webpages/Printable version

title: Authoring Webpages/Printable version


text: Web Programming/Printable version

title: Web Programming/Printable version


text: Common JavaScript Manual/Printable version


text:
User talk:Kell kelly quione

hi this is kelly's talk page Kell kelly quione (discuss • contribs) 19:57, 21 November 2021 (UTC)
 * facebook:zee zoe

title: User talk:Kell kelly quione


text:
Eric 6 User's Guide/Getting Started/UI Tour

There are four major panels in the User Interface: Left, Right, Bottom and Central Park.

Central Park is the focus of most of the attention. It contains a multi-tab editor, based on QScintilla, to display, edit and debug code.

Central Park is flanked by:

Left panel (West Side, Left Side or Left Sidebar) which hosts:

 * Project Viewer
 * Multi-Project Viewer
 * Template Viewer
 * File Browser
 * Symbols

Right panel (East Side, Right Side, Right Sidebar) which contains:

 * Code Documentation Viewer
 * Debug Viewer
 * PyPl
 * Conda
 * Cooperation Viewer
 * IRC
 * MicroPython

Bottom panel (South Side, Bottom Side, Bottom Sidebar) which sports:

Just above and to the right of the panels is an extensive set of configurable toolbars.
 * Shell
 * Task Viewer
 * Log Viewer
 * Numbers Viewer
 * Plugins: Time Tracker, Translation

Atop it all is a traditional (though extensive) menu system.


text:
LMIs in Control/pages/LMI for Attitude Control of BTT Missiles

LMI for Attitude Control of BTT Missles, Roll Channel

The dynamic model of a bank-to-burn (BTT) missile can be simplified for practical application. The dynamic model for a BTT missile is given by the same model used for nonrotating missiles. However, in this case we can assume that the missile is axis-symmetrically design, and thus Jx = Jy. We assume that the roll channel is independent of the pitch and yaw channels.

The System
The state-space representation for the pitch channel can be written as follows:

$$ \begin{align} \dot{x}(t) &= A(t)x(t) + B_{1}(t)u(t) + B_{2}(t)d(t) \\ y(t) &= C(t)x(t) + D_{1}(t)u(t) + D_{2}(t)d(t) \end{align} $$

where $$ x(t) = [\omega_{x} \quad \phi]^{\text{T}}$$ is the state variable, $$ u(t) = \delta_{x} $$ is the control input, and $$ y = \phi $$ is the output. The parameters $$ \omega_{x} $$, $$ \phi $$, and $$ \delta_{x} $$ refer to the roll angular velocity, the roll angle, and the aileron deflection, respectively.

The Data
The system can be described as:

$$ \begin{align} \begin{bmatrix} \dot{\omega}_x(t) \\ \dot{\phi}(t) \end{bmatrix} = \begin{bmatrix} -c_1(t) & 0 \\ 1 & 0 \end{bmatrix} \begin{bmatrix} \omega_x(t) \\ \phi(t) \end{bmatrix} + \begin{bmatrix} -c_3(t) \\ 0 \end{bmatrix} \delta_x(t) \end{align} $$

$$ \begin{align} y(t) = \phi(t) \end{align} $$

which can be represented in state space form as:

$$ \begin{align} A(t) = \begin{bmatrix} -c_{1}(t) & 0 \\ 1 & 0 \end{bmatrix} \end{align} $$

$$ \begin{align} B_{1}(t) = \begin{bmatrix} -c_{3}(t) \\ 0 \end{bmatrix}, \quad B_{2}(t) = \begin{bmatrix} 0 \\ 0 \end{bmatrix} \end{align} $$

$$ \begin{align} C(t) = \begin{bmatrix} 0 & 1 \end{bmatrix} \end{align} $$

$$ \begin{align} D_{1}(t) = 0, \quad D_{2}(t) = 0 \end{align} $$

where $$ c_{1}(t) $$ and $$ c_{3}(t) $$ are the system parameters.

The Optimization Problem
The optimization problem is to find a state feedback control law $$ u=Kx$$ such that:

1. The closed-loop system:

$$ \begin{align} \dot{x} &= (A+B_{1}K)x + B_{2}d \\ z &= (C + D_{1}K)x + D_{2}d \end{align} $$

is stable.

2. The $$ H_{\infty} $$ norm of the transfer function:

$$G_{zd}(s) = (C + D_{1}K)(sI-(A+B_{1}K))^{-1}B_{2} + D_{2}$$

is less than a positive scalar value, $$ \gamma $$. Thus:

$$ ||G_{zd}(s)||_{\infty} < \gamma $$

The LMI: LMI for BTT missile attitude control
Using Theorem 8.1 in [1], the problem can be equivalently expressed in the following form:

$$ \begin{align} &\text{min} \quad \gamma \\ &\text{s.t.} \quad X > 0 \\ &\begin{bmatrix} (AX+B_{1}W)^{T} + AX+B_{1}W & B_{2} & (CX+D_{1}W)^{T} \\ B_{2}^{T} & -\gamma I & D_{2}^{T} \\ CX + D_{1}W & D_{2} & -\gamma I \end{bmatrix} < 0 \end{align}$$

Conclusion:
As mentioned, the aim is to attenuate the disturbance on the performance of the missile. The parameter $$ \gamma $$ is the disturbance attenuation level. However, it should be noted that this model for the roll channel for a BTT missile is very simple and easy to handle, there is no disturbance to attenuate. This problem is presented here for completeness when used in a full BTT missile model along with the pitch/yaw channels. When the matrices $$ W $$ and $$ X $$ are determined in the optimization problem, the controller gain matrix can be computed by:

$$ K = WX^{-1} $$

Implementation
A link to MATLAB code for the problem in the GitHub repository:

https://github.com/scarris8/LMI-for-BTT-Missile-Roll-Control

Related LMIs
LMI for Attitude Control of Nonrotating Missles, Pitch Channel

LMI for Attitude Control of Nonrotating Missles, Yaw/Roll Channel

Return to Main Page
LMIs in Control/Tools


text: Onondaga/Printable version

title: Onondaga/Printable version


text:
Solutions to Hartshorne's Algebraic Geometry/Printable version

 * Separated and Proper Morphisms

 * Projective Morphisms

 * Cech Cohomology

 * Riemann-Roch Theorem

 * Glossary of notation


text: Building Haycocks/Printable version

title: Building Haycocks/Printable version


text: Linux Basics/Printable version

title: Linux Basics/Printable version


text:
Talk:Public International Law/Actors in International Law/States

Review: May 30, 2023
Dear Alex,

I can only agree with Sué and Max - a brilliant chapter. Thank you so much! I also added only some small suggestions. I agree with Max on the wordcount and where there is potential to shorten the text a bit.

Best, Raffaela --Raffaela Kunz (discuss • contribs) 16:54, 30 May 2023 (UTC)

Review: 24 May 2023
Dear Alex,

I love this chapter so much! Thank you, thank you, thank you! I have added some minor comments in the text, but otherwise I think this chapter is good to go content-wise.

Warm regards, Sué

Sué González Hauck (discuss • contribs) 19:11, 24 May 2023 (UTC)

Review: May 16, 2023
Your chapter is exceptionally well-written, presenting complex ideas in a clear and accessible manner while also raising thought-provoking questions. One aspect of your chapter that I particularly appreciated was the structure. Each section began with a concise introduction, providing an overview of the topic at hand. This approach allowed readers to grasp the main points before delving into a more detailed discussion. Additionally, you made a conscious effort to revisit and reinforce key points throughout the chapter. Another strength of the chapter was your ability to strike a balance between presenting established viewpoints and offering critical analysis. You not only introduced the prevailing opinions on statehood in international law but also presented alternative perspectives. This critical approach encourages students to engage with the material and develop their own understanding of the subject matter.

Some minor things:

- You will also find some comments in your chapter in which I elaborate on something more specifically. To view these comments, just open you chapter page and click on "Edit" in the top-right toolbox.

- Note also that the following parts are still missing: required knowledge, summary

- You could add some links to other chapters of the textbook.

- Note that I have a few linguistic and stylistic improvements to the text

Max Milas (discuss • contribs) 08:34, 16 May 2023 (UTC)

Review 22 November 2021
Dear Alex,

Thank you for this outline, I am much looking forward to reading the chapter. Brief feedback on the structure: Given that we have a separate chapter on jurisdiction, I wonder whether you could just refer to this to avoid an overlap. In the "recognition" section, I would find it interesting to include the distinction between recognition of states and of governments. Maybe you could even add a small section on the latter given its renewed relevance (Venezuela, Afghanistan)? Finally, I think it would be great to include a section on borders and continuity and extinction of statehood. If you think that this exceeds the space you have, we should probably think about adding a separate small chapter on this - let me know what you think!

Best, --Raffaela Kunz (discuss • contribs) 10:14, 22 November 2021 (UTC)

 * Dear Alex
 * I really enjoyed reading your chapter. I thought it was well written. You have written a clear, concise, and understandable introduction to the concept of states in international law.
 * There is really nothing further I could say, except perhaps to ask whether you could say more about the creation of states from the decolonisation moment (although I understand there is a separate decolonisation chapter). I also wonder if there is space within an introductory text on states for Palestine.
 * I have also recently come across the work of Kate Purcell on the relationship between geographical change and the law of the sea, which raises questions on how climate change could affect not only the maritime entitlements of small island states, but also the prospect of those island states disappearing altogether as sea levels rise. Perhaps this might enrich the section concerning the extinction of states.
 * But overall, the text reads really well.
 * Warmly
 * Alex AlexPDelaCruz (discuss • contribs) 05:59, 9 June 2022 (UTC)
 * Dear Alex,
 * Thank you very much for this generous review. I deliberately stayed away from decolonisation for the reason you mention, although I could include a brief blurb on that topic, if the general editors wish. I would love to write something on Palestine (in fact, an analysis of that state is part of a book project I have coming up) however I am worried that the 200 or so words I would have to address it here could scarcely do the subject justice. I am familiar with Kate's work, yes. I will add reference to her in the final version, however from memory (I have her book on the shelf behind me) her actual analysis of the existential question is reasonably short. Thanks again for your care and attention with this review, I really appreciate it.
 * All the best,
 * Alex GlexAreen-York (discuss • contribs) 07:07, 9 June 2022 (UTC)
 * FYI, I have now added reference to Purcell and to the chapter on decolonisation into the text.
 * A GlexAreen-York (discuss • contribs) 11:13, 16 June 2022 (UTC)


text: User talk:2600:387:5:0:0:0:0:0/48

title: User talk:2600:387:5:0:0:0:0:0/48


text:
Building Haycocks/Cutting/Implements

The original tool for cutting hay was a scythe, which is a slow, labour-intensive means of cutting a hay meadow. Horse-drawn machines with finger bar mowers pulled by one or who horses were a great improvement. Tractors also have finger bar mower attachments availabe. The finger bar mower can sometimes jam in heavy meadows, and with tractors it is important to ensure the power to the mover is removed before clearing a jam or their is a risk of injury including loss of fingers. A drum mower, with two rotating drums rotating at speed is has typcially replaced the finger mower. These are generally more efficient and less susceptable to jaming. The cutting implement gear is generally covered by a skirt as stones can be flung out at high speed, there is still risk of this if one is followed on foot.

title: Building Haycocks/Cutting/Implements


text:
User:Margav06/sandbox

 * /Click here to continue/

title: User:Margav06/sandbox


text:
User talk:171.33.192.158

hey giuys

title: User talk:171.33.192.158


text: User talk:EthanGaming7640

title: User talk:EthanGaming7640


text:
User:Margav06/sandbox/Click here to continue

LMIs in Control

Table of contents

 * 1) /Preface/
 * 2) Introduction to Control System
 * 3) /Notation/
 * 4) /Fundamentals of Matrix and LMIs/
 * 5) /Software for LMIs and Optimization/
 * 6) Linear Systems
 * 7) Introduction to Linear System
 * 8) /LMIs in system and stability Theory/
 * 9) /Optimal control systems/
 * 10) /Controller synthesis/
 * 11) /Observer synthesis/
 * 12) /Robust Controls/
 * 13) /Time-Delay Systems/
 * 14) /Applications of Linear systems/
 * 15) Non-linear Systems
 * 16) Introduction to Non-Linear systems
 * 17) /Applications of Non-Linear Systems/


text:
User:Margav06/sandbox/Click here to continue/Matrix and LMI Properties and Tools

 * Basic Matrix Theory
 * Notion of Matrix Positivity
 * /KYP Lemmas/
 * /Continuous Time/
 * /Discrete Time/
 * Deduced LMI Conditions for H-infinity Index
 * Deduced LMI Conditions for H2 Index
 * Dissipativity of Systems
 * D-Stabilization
 * H-Stabilization
 * H-2 Norm of the System
 * Algebraic Riccati Equation
 * System Zeros without feedthrough
 * System zeros with feedthrough
 * Negative Imaginary Lemma
 * Small Gain Theorem
 * Tangential Nevanlinna-Pick Interpolation
 * Nevanlinna-Pick Interpolation with Scaling
 * Generalized $ H_{2} $ Norm
 * /Passivity and Positive Realness/
 * /Non-expansivity and Bounded Realness/
 * /Change of Subject/
 * /Congruence Transformation/
 * /Finsler's Lemma/
 * /Young’s Relation (Completion of the Squares)/
 * /Schur Stabilizability/
 * /Variable Reduction Lemma/
 * Ellipsoidal inequality
 * /Dilation/


text:
LMIs in Control/pages/Ellipsoidal inequality

Introduction
The simplex algorithm was the first algorithm proposed for linear programming, and although the algorithm is quite fast in practice, no variant of it is known to be polynomial time. The Ellipsoid algorithm is the first polynomial-time algorithm discovered for linear programming. The Ellipsoid algorithm was proposed by the Russian mathematician Shor in 1977 for general convex optimization problems and applied to linear programming by Khachyan in 1979.

The Ellipsoidal inequality constraints are a type of Lyapunov Function. They are important in process identification, parameter estimation, and statistics. Applications include the crystallization process, polymer film extrudes, and paper machines.

The Data
Formulation of the inequality depends upon the coordinates of the ellipsoid $$ (x_i) $$ and the centre of the ellipsoid $$ (x_c) $$.

The Ellipsoidal Inequality
An Ellipsoid is described by:

$$ \begin{align} \ (x-x_c)^{T} P^{-1} (x-x_c) < 1,\\ \ where, P=P^{T} > 0\\ \end{align} $$

It can be expressed as an LMI using the Schur complement lemma with $$ Q(x)=1, R(x)=P, and S(x)= (x-x_c)^{T} : $$ $$ \begin{bmatrix} 1 && (x-x_c)^{T}\\ (x-x_c) && P \end{bmatrix}$$ $$\begin{align}>= 0\end{align}$$

Conclusion
Using this inequality, as the algorithm advances to the next step; if the value of P is positive; the volume will keep on shrinking until the LMI is fulfilled.

Implementation

 * https://github.com/Margav06/LMI-for-Ellipsoidal-Inequality


text: The science of finance/Printable version


text: PyKDE Programming/Printable version

title: PyKDE Programming/Printable version


text:
PostgreSQL/Vacuum

Eliminating Bloat
As we have seen in the MVCC chapter, the database tends to occupy more and more disk space caused by bloat: over time more and more logically deleted but physically existing old versions of rows arise within heap and index files. This chapter explains how the SQL command VACUUM and the automatically running Autovacuum processes clean up files and thereby prevent their endless growth.

One process of the Instance is the Autovacuum daemon. It continuously monitors the state of all databases based on values that are collected by the Statistics Collector and starts Autovacuum processes whenever it detects certain situations, e.g.: a huge number of modifications within a table. This leads to the intended dynamic behavior of PostgreSQL: Only when it is necessary, Autovauum cleans up the files. In addition, client processes can issue the SQL command VACUUM at any time. DBAs do this interactively when they recognize critical situations, or they start it in periodically running batch jobs. In most cases, this is not necessary because of the constantly running Autovacuum daemon.

The central value to determine which of the physically existing row versions are no longer needed is, which shows what transaction has deleted the row. The elimination operation must evaluate it against several criteria which must all apply:

 * must be different from zero because a value of zero indicates that the row version is not deleted.
 * must contain an XID which is older than the oldest XID of all currently running transactions. That guarantees that no existing or upcoming transaction will have read or write access to this row version.
 * The transaction of  must be committed. If it is still running or was rollback-ed, this row version is treated as valid (not deleted).
 * If there is a situation that the row version is part of multiple transactions, more actions must be taken.

When the vacuum operation detects such an outdated row version, it marks its space as free for future use of write actions, optimizes the physical arrangement of the remaining versions on the page, and removes index tuples pointing to the removed row version. But only in rare situations (or in the case of VACUUM FULL), this space is released to the operating system. In most cases, it remains occupied by the database and will be used by future INSERT, UPDATE or DELETE commands. Hence, even with successful running Autovacuum, the size of files does not shrink; but they have more respectively huger 'holes' where coming data can be stored. Only after this 'hole-space' is exhausted (per page), it gets necessary to claim new disc space from the operating system to store new data.

An exception to this conservative behavior is the SQL command VACUUM FULL. It creates a new file at the operating system level, copies all valid row versions to it with no extra space by ignoring the 'holes', and deletes the old file. But it is slower and requires an exclusive lock on the affected tables.

Because vacuum operations typically are I/O intensive, which can hinder other activities, Autovacuum avoids performing many vacuum operations in bulk. Instead, it carries out many small actions with time delays in between. The SQL command VACUUM runs immediately and without any time delay.

More Actions
VACUUM, as well as Autovacuum, don't just eliminate bloat. They perform additional tasks for minimizing future I/O activities of themselves as well as of other processes. This extra work can be done in a very efficient way since in most cases the expensive physical access to pages has taken place anyway. The additional operations are:
 * Freeze: It marks certain row versions as frozen. This means that they are treated as 'valid' (visible) forever, independent from the wraparound problem (see later).
 * Visibility Map and Free Space Map: It logs information about the state of the handled pages in two additional files, the Visibility Map and the Free Space Map.
 * Statistics: Similar to the Statistics Collector it collects statistics about the number of rows per table, the distribution of values, and so on, as the basis for decisions of the query planner.

title: PostgreSQL/Vacuum


text:
PostgreSQL/Visibility of Row Versions

*** work in progress  ***  work in progress  ***  work in progress  ***  work in progress  ***

title: PostgreSQL/Visibility of Row Versions


text:
PostgreSQL/Visibility Map and Free Space Map

Every table is stored in a separate disk file. The names of such files consist of numbers which are the internal Object Identifiers (OID) of the table used in the System Catalog. Each such file is accompanied by a file for its Visibility Map and another one for its Free Space Map. They have the same names expanded by the suffix '_vm' respectively '_fsm'. An example for such a triplet of filenames is: 3083, 3083_vm, and 3083_fsm.

The two additional files contain metainformation to optimize I/O activities to the original file - especially for vacuuming and freezing, but also for other write activities. Because I/O works per physical page, the metainformation addresses complete physical pages, not any part of pages like rows or versions.

Visibility Map
The Visibility Map contains two flags — stored as two bits — for each page of the original file. The first bit indicates that the associated page contains only valid row versions, i.e. there is no bloat to be vacuumed. The second bit indicates that the page only contains already frozen row versions.

Please consider two details. First, in most cases a page contains many rows or row versions. However, both flags are associated with the page, not with an individual row or row version. The flags are set only under the condition that they are valid for ALL row versions stored on the page. Second, since there are only two bits per page (2 bits correlate to 8 kiloBytes, which is a relation of about 1 : 32.000), the Visibility Map is considerably smaller than the original file.

VACUUM and Autovacuum set the flags. Every write operation on any row version of the page clears the flags.

The Visibility Map helps VACUUM and Autovacuum to save unnecessary I/O. When the first bit is set, it's unnecessary to read the original page and check its content for removing bloat. It's clear that there is no bloat. Correspondingly, if VACUUM or Autovacuum have to perform freezing of rows, they can skip pages where the second bit signals that the page only contains already frozen row versions - no freeze is necessary.

Free Space Map
The Free Space Map tracks the amount of free, unused space per page. It is organized as a highly condensed B-tree of (rounded) free space size per page.

VACUUM and Autovacuum change the Free Space Map according to their write operations (marking of row versions as 'obsolete' and rearranging the physical layout of pages). Other write operations consult the Free Space Map to locate pages with enough free space for the intended write operations and change the Free Space Map afterward.


text:
User:King luzubar online TV

Introduction to the psychology

title: User:King luzubar online TV


text:
User talk:Bes island

Ukrainian/Diaspora
Hi, I noticed that you created the book Ukrainian. I have added Israel to Ukrainian/Diaspora, and I would like to know do you think the page should be linked in the book page? Thanks in advance, -Gifnk dlm 2020 If only Middle English Wikipedia could be saved (talk) 15:38, 24 November 2021 (UTC)

 * Hi, this is perfectly fine in my opinion. Bes island (discuss • contribs) 00:59, 4 December 2021 (UTC)

Merry Christmas 2021

Gifnk dlm 2020 (chat) wishes you a Very Merry Christmas and a Happy New Year. Hopefully this greeting has made your day a little better. Spread WikiLove by wishing another user Merry Christmas! Merry Christmas and Happy New Year.

Much love! -Gifnk dlm 2020 Merry Christmas 🎄(talk) 12:12, 24 December 2021 (UTC)

title: User talk:Bes island


text:
Eric 6 User's Guide/Getting Started/Quick Start

Hello World
When Eric starts, the editor window (Central Park) is blank, watermarked with the Eric logo.

If you just want to bang in some code, select File, New. The blank tab will become labeled Untitled 1 and the editor window will take on a black background. Typing yields white text. This is to remind you that the contents have not been saved. Saving the file ("hellowworld.py") will switch to black text on white.

As you add new lines, note that the left line margin is red - unsaved - while the previously saved lines have green markers. This is just one of Eric's myriad of UI cues (there should be a prize for the person who spots and documents the most).

Create a demo: To test it, click Start, Debug Script (F5). Uncheck "Do not stop at first line". Click Okay. The display will change - worth looking around. The Debug menu choices will be enabled: F7 to step, etc

Unless you are dipping just the very end of your baby toe in the pool, you'll want to go further. Recommended next step: create a project.

New Project
Menu Project, New: wants the location of main.py. Hopefully you've got previous Python code organized somewhere? Create a new sub-folder (using Eric's File-Viewer - Left panel - or your favourite file manager). Rename/move the helloworld.py file, above, to main.py in the new folder. Back to Project, New. The fields on the form that appears are pretty much self-explanatory. Fill in a Project Name, select the new folder for Project Directory and main.py for the Main Script and make whatever other changes/additions you prefer.

Eric will create a project file in the folder named ProjectName.epj and add an __init__.py file. The Project Viewer (Left), will list the __init_.py and main.py files. Click on main.py - it opens in the editor window.

.