AI Generator Lyrics To Song

AI Generator Lyrics To Song — independent reviews, comparisons, pricing and step-by-step guides on Aizhi.

  • Attention (machine learning)

    Attention (machine learning)

    In machine learning, attention is a method that determines the importance of each component in a sequence relative to the other components in that sequence. In natural language processing, importance is represented by "soft" weights assigned to each word in a sentence. More generally, attention encodes vectors called token embeddings across a fixed-width sequence that can range from tens to millions of tokens in size. Unlike "hard" weights, which are computed during the backwards training pass, "soft" weights exist only in the forward pass and therefore change with every step of the input. Earlier designs implemented the attention mechanism in a serial recurrent neural network (RNN) language translation system, but a more recent design, namely the transformer, removed the slower sequential RNN and relied more heavily on the faster parallel attention scheme. Inspired by ideas about attention in humans, the attention mechanism was developed to address the weaknesses of using information from the hidden layers of recurrent neural networks. Recurrent neural networks favor information contained in words at the end of a sentence and thus deemed more recent, thereby tending to attenuate the significance and associated predictive weight assigned to information earlier in the sentence. Attention allows a token equal access to any part of a sentence directly, rather than only through the previous state. == History == Additional surveys of the attention mechanism in deep learning are provided by Niu et al. and Soydaner. The major breakthrough came with self-attention, where each element in the input sequence attends to all others, enabling the model to capture global dependencies. This idea was central to the Transformer architecture, which replaced recurrence with attention mechanisms. As a result, Transformers became the foundation for models like BERT, T5 and generative pre-trained transformers (GPT). == Overview == The modern era of machine attention was revitalized by grafting an attention mechanism (Fig 1. orange) to an Encoder-Decoder. Figure 2 shows the internal step-by-step operation of the attention block (A) in Fig 1. === Interpreting attention weights === In translating between languages, alignment is the process of matching words from the source sentence to words of the translated sentence. Networks that perform verbatim translation without regard to word order would show the highest scores along the (dominant) diagonal of the matrix. The off-diagonal dominance shows that the attention mechanism is more nuanced. Consider an example of translating I love you to French. On the first pass through the decoder, 94% of the attention weight is on the first English word I, so the network offers the word je. On the second pass of the decoder, 88% of the attention weight is on the third English word you, so it offers t'. On the last pass, 95% of the attention weight is on the second English word love, so it offers aime. In the I love you example, the second word love is aligned with the third word aime. Stacking soft row vectors together for je, t', and aime yields an alignment matrix: Sometimes, alignment can be multiple-to-multiple. For example, the English phrase look it up corresponds to cherchez-le. Thus, "soft" attention weights work better than "hard" attention weights (setting one attention weight to 1, and the others to 0), as we would like the model to make a context vector consisting of a weighted sum of the hidden vectors, rather than "the best one", as there may not be a best hidden vector. == Variants == Many variants of attention implement soft weights, such as fast weight programmers, or fast weight controllers (1992). A "slow" neural network outputs the "fast" weights of another neural network through outer products. The slow network learns by gradient descent. It was later renamed as "linearized self-attention". Bahdanau-style attention, also referred to as additive attention, Luong-style attention, which is known as multiplicative attention, Early attention mechanisms similar to modern self-attention were proposed using recurrent neural networks. However, the highly parallelizable self-attention was introduced in 2017 and successfully used in the Transformer model, positional attention and factorized positional attention. For convolutional neural networks, attention mechanisms can be distinguished by the dimension on which they operate, namely: spatial attention, channel attention, or combinations. These variants recombine the encoder-side inputs to redistribute those effects to each target output. Often, a correlation-style matrix of dot products provides the re-weighting coefficients. In the figures below, W is the matrix of context attention weights, similar to the formula in Overview section above. == Optimizations == === Flash attention === The size of the attention matrix is proportional to the square of the number of input tokens. Therefore, when the input is long, calculating the attention matrix requires a lot of GPU memory. Flash attention is an implementation that reduces the memory needs and increases efficiency without sacrificing accuracy. It achieves this by partitioning the attention computation into smaller blocks that fit into the GPU's faster on-chip memory, reducing the need to store large intermediate matrices and thus lowering memory usage while increasing computational efficiency. === FlexAttention === FlexAttention is an attention kernel developed by Meta that allows users to modify attention scores prior to softmax and dynamically chooses the optimal attention algorithm. == Applications == Attention is widely used in natural language processing, computer vision, and speech recognition. In NLP, it improves context understanding in tasks like question answering and summarization. In vision, visual attention helps models focus on relevant image regions, enhancing object detection and image captioning. === Attention maps as explanations for vision transformers === From the original paper on vision transformers (ViT), visualizing attention scores as a heat map (called saliency maps or attention maps) has become an important and routine way to inspect the decision making process of ViT models. One can compute the attention maps with respect to any attention head at any layer, while the deeper layers tend to show more semantically meaningful visualization. Attention rollout is a recursive algorithm to combine attention scores across all layers, by computing the dot product of successive attention maps. Because vision transformers are typically trained in a self-supervised manner, attention maps are generally not class-sensitive. When a classification head is attached to the ViT backbone, class-discriminative attention maps (CDAM) combines attention maps and gradients with respect to the class [CLS] token. Some class-sensitive interpretability methods originally developed for convolutional neural networks can be also applied to ViT, such as GradCAM, which back-propagates the gradients to the outputs of the final attention layer. Using attention as basis of explanation for the transformers in language and vision is not without debate. While some pioneering papers analyzed and framed attention scores as explanations, higher attention scores do not always correlate with greater impact on model performances. == Mathematical representation == === Standard scaled dot-product attention === For matrices: Q ∈ R m × d k , K ∈ R n × d k {\displaystyle Q\in \mathbb {R} ^{m\times d_{k}},K\in \mathbb {R} ^{n\times d_{k}}} and V ∈ R n × d v {\displaystyle V\in \mathbb {R} ^{n\times d_{v}}} , the scaled dot-product, or QKV attention, is defined as: Attention ( Q , K , V ) = softmax ( Q K T d k ) V ∈ R m × d v {\displaystyle {\text{Attention}}(Q,K,V)={\text{softmax}}\left({\frac {QK^{T}}{\sqrt {d_{k}}}}\right)V\in \mathbb {R} ^{m\times d_{v}}} where T {\displaystyle {}^{T}} denotes transpose and the softmax function is applied independently to every row of its argument. The matrix Q {\displaystyle Q} contains m {\displaystyle m} queries, while matrices K , V {\displaystyle K,V} jointly contain an unordered set of n {\displaystyle n} key-value pairs. Value vectors in matrix V {\displaystyle V} are weighted using the weights resulting from the softmax operation, so that the rows of the m {\displaystyle m} -by- d v {\displaystyle d_{v}} output matrix are confined to the convex hull of the points in R d v {\displaystyle \mathbb {R} ^{d_{v}}} given by the rows of V {\displaystyle V} . To understand the permutation invariance and permutation equivariance properties of QKV attention, let A ∈ R m × m {\displaystyle A\in \mathbb {R} ^{m\times m}} and B ∈ R n × n {\displaystyle B\in \mathbb {R} ^{n\times n}} be permutation matrices; and D ∈ R m × n {\displaystyle D\in \mathbb {R} ^{m\times n}} an arbitrary matrix. The softmax function is permutation equivariant in the sense that: softmax ( A D B ) = A softmax ( D ) B {\displays

    Read more →
  • Friending and following

    Friending and following

    Friending is the act of adding someone to a list of "friends" on a social networking service. The notion does not necessarily involve the concept of friendship. It is also distinct from the idea of a "fan"—as employed on the WWW sites of businesses, bands, artists, and others—since it is more than a one-way relationship. A "fan" only receives things. A "friend" can communicate back to the person friending. The act of "friending" someone usually grants that person special privileges (on the service) with respect to oneself. On Facebook, for example, one's "friends" have the privilege of viewing and posting to one's "timeline". Following is a similar concept on other social network services, such as Twitter and Instagram, where a person (follower) chooses to add content from a person or page to their newsfeed. Unlike friending, following is not necessarily mutual, and a person can unfollow (stop following) or block another user at any time without affecting that user's following status. The first scholarly definition and examination of friending and defriending (the act of removing someone from one's friend list, also called unfriending) was David Fono and Kate Raynes-Goldie's "Hyperfriendship and beyond: Friends and Social Norms on LiveJournal" from 2005, which identified the use of the term as both a noun and a verb by users of early social network site and blogging platform LiveJournal, which was originally launched in 1999. == Friend/follower count, friend collecting, and multiple accounts == The addition of people to a friend list without regard to whether one actually is their friend is sometimes known as friend whoring. Matt Jones of Dopplr went so far as to coin the expression "friending considered harmful" to describe the problem of focusing upon the friending of more and more people at the expense of actually making any use of a social network. Friend collecting is the adding of hundreds or thousands of friends/followers, a not uncommon order of magnitude on some social sites. As a result, many teen users feel pressured to heavily curate their posts, posting only carefully posed and edited photographs with well-thought-out captions. Some Instagram users will create a second account, known as a Finsta (short for "Fake Instagram"). A Finsta is typically private, and the owner only allows close friends to follow it. Since the follower count is kept down, the posts can be more candid and silly in nature. Users may also create multiple accounts based on their interests. Someone with a personal social media account might be a photographer and maintain a separate account for that. There is risk associated with following large numbers of people: scholars say that social anxiety could be an effect of managing a large social media network, as users can feel jealous and have a "fear of missing out". == Unfriending and unfollowing == Unfriending is the act of removing someone from a friends list. On Facebook, this means the action is unilateral, meaning, the friendship is terminated on both sides. The act of unfriending is often used when one user was flirting and made the other uncomfortable. Unfollowing is a little different. When a user unfollows someone on Instagram or Twitter, it continues a one-sided relationship. Often, the unfollowed user doesn't realize they were unfollowed, so they continue the following. == Social network friending and friendship == There are distinct groups of "friends" that one can friend on a social networking service. The notion of a social network friend does not necessarily embody the concept of friendship. Although terminology has not yet evolved to distinguish the different types of social networking friends, they can be broken into the following three categories. friends who are actually known These are people that may be one's friends or family in real life, with whom one has regular interaction either on-line or off-line. organizational friends These are companies and other organizations who maintain a "friending" relationship as a contacts list. complete strangers These are social networking "friends" with whom one has no relationship at all. Within these categories "friends" can be made up of strong ties, weak existing ties, weak latent ties, and parasocial ties. Strong ties can be made up of close family members and friends where self-disclosure, intimacy and frequent content occur. Weak existing ties can be made up of acquaintances, co-workers and distance relatives with whom the user has inconsistent contact. Weak latent ties can be made up of people within a similar geographical location or profession that can be used as a potential future bridge to other connections. Parasocial ties can be made up of celebrities, public figures and media personas. Human nature is to reciprocate a friending, marking someone as a friend who has marked oneself as a friend. This is a social norm for social networking services. However, this leads to mixing up who is an actual friend, and who is a contact. Tagging someone as a "contact" who has marked one as a "friend" can be perceived as impolite. Other concerns about this issue are treated in Sherry Turkle's Alone Together which analyses many behavioral dynamics in social media friendships. Turkle defines herself as "cautiously optimistic", but expresses concern that distance communications may undermine genuine face-to-face spoken discourses, lessening people's expectations of one another. One social networking service, FriendFeed, allows one to friend someone as a "fake" friend. The person "fake" friended receives the usual notifications for friending, but that person's updates are not received. Gavin Bell, author of Building Social Web Applications, describes this mechanism as "ludicrous". Results from a 2007 survey the Center for the Digital Future stated that only 23% of internet users have at least one virtual friend whom they have only met online. Ideally the number of virtual friends is directly proportional to the use of the Internet, but the same survey showed 20% of heavy-users (more than 3 hours/day) who claimed an average of 8.7% online friends, reported at least one relationship that started virtually and migrated to in-person contact. This results and other concerning issues are included in the book Networked: The New Social Operating System co-written by Lee Rainie and Barry Wellman in 2012. == Ethical considerations == The act of "friending" someone on a social networking service has particular ethical implications for judges in the United States. Judicial codes of conducts in the various states generally incorporate some form of provision that judges should avoid even the appearance of impropriety. Whether this regulates and even prohibits judges "friending" attorneys that appear before them, and law enforcement personnel, has been the subject of some analysis by the judicial ethics panels of the various states. They haven't all agreed on the guidance that they have given to judges: The New York state Judicial Ethics committee in 2009 simply advised judges to employ caution, noting that the issue of "friending" someone on a social networking service is a publicly observable act that has little difference from other public behavior concerns judges already face. The Florida Judicial Ethics Advisory committee in 2009 noted that, judges being normal human beings, it was unavoidable for judges to form friendships without the responsibilities of their job. It prohibited judges from friending any attorneys that appeared before them, whilst allowing friending of those who do not, on the grounds that it may give the appearance to the general public (even if the substance is otherwise) that those attorneys who are friended hold special sway with the judge. A minority opinion of the committee asserted that there is a substantive difference between "friending" on a social networking service and actual friendship, and that the general public, being aware of the norms of social networking services, was capable of drawing this distinction and would not reasonably conclude either a special degree of influence or a violation of the code of judicial conduct. This minority opinion was outnumbered twice in 2009, both in the Judicial Ethics Advisory and in the Florida Supreme Court Judicial Ethics Advisory committee. The South Carolina judicial conduct committee in 2009 permitted judges to friend attorneys and law enforcement personnel, with the proviso that no judicial business should be conducted upon nor discussed via the social networking service. "... a judge should not become isolated from the community in which the judge lives.", the committee stated. The Kentucky Judicial Ethics committee in 2010 took the same position as the minority opinion in Florida. It urged judges to exercise caution, but recognized that the act of friending "does not, in and of itself, indicate the degree or intensity of a judge's relationship with the person who is the 'friend'

    Read more →
  • Hardware-based encryption

    Hardware-based encryption

    Hardware-based encryption is the use of computer hardware to assist software, or sometimes replace software, in the process of data encryption. Typically, this is implemented as part of the processor's instruction set. For example, the AES encryption algorithm (a modern cipher) can be implemented using the AES instruction set on the ubiquitous x86 architecture. Such instructions also exist on the ARM architecture. However, more unusual systems exist where the cryptography module is separate from the central processor, instead being implemented as a coprocessor, in particular a secure cryptoprocessor or cryptographic accelerator, of which an example is the IBM 4758, or its successor, the IBM 4764. Hardware implementations can be faster and less prone to exploitation than traditional software implementations, and furthermore can be protected against tampering. == History == Prior to the use of computer hardware, cryptography could be performed through various mechanical or electro-mechanical means. An early example is the Scytale used by the Spartans. The Enigma machine was an electro-mechanical system cipher machine notably used by the Germans in World War II. After World War II, purely electronic systems were developed. In 1987 the ABYSS (A Basic Yorktown Security System) project was initiated. The aim of this project was to protect against software piracy. However, the application of computers to cryptography in general dates back to the 1940s and Bletchley Park, where the Colossus computer was used to break the encryption used by German High Command during World War II. The use of computers to encrypt, however, came later. In particular, until the development of the integrated circuit, of which the first was produced in 1960, computers were impractical for encryption, since, in comparison to the portable form factor of the Enigma machine, computers of the era took the space of an entire building. It was only with the development of the microcomputer that computer encryption became feasible, outside of niche applications. The development of the World Wide Web lead to the need for consumers to have access to encryption, as online shopping became prevalent. The key concerns for consumers were security and speed. This led to the eventual inclusion of the key algorithms into processors as a way of both increasing speed and security. == Implementations == === In the instruction set === ==== x86 ==== The X86 architecture, as a CISC (Complex Instruction Set Computer) Architecture, typically implements complex algorithms in hardware. Cryptographic algorithms are no exception. The x86 architecture implements significant components of the AES (Advanced Encryption Standard) algorithm, which can be used by the NSA for Top Secret information. The architecture also includes support for the SHA Hashing Algorithms through the Intel SHA extensions. Whereas AES is a cipher, which is useful for encrypting documents, hashing is used for verification, such as of passwords (see PBKDF2). ==== ARM ==== ARM processors can optionally support Security Extensions. Although ARM is a RISC (Reduced Instruction Set Computer) architecture, there are several optional extensions specified by ARM Holdings. === As a coprocessor === IBM 4758 – The predecessor to the IBM 4764. This includes its own specialised processor, memory and a Random Number Generator. IBM 4764 and IBM 4765, identical except for the connection used. The former uses PCI-X, while the latter uses PCI-e. Both are peripheral devices that plug into the motherboard. === Proliferation === Advanced Micro Devices (AMD) processors are also x86 devices, and have supported the AES instructions since the 2011 Bulldozer processor iteration. Due to the existence of encryption instructions on modern processors provided by both Intel and AMD, the instructions are present on most modern computers. They also exist on many tablets and smartphones due to their implementation in ARM processors. == Advantages == Implementing cryptography in hardware means that part of the processor is dedicated to the task. This can lead to a large increase in speed. In particular, modern processor architectures that support pipelining can often perform other instructions concurrently with the execution of the encryption instruction. Furthermore, hardware can have methods of protecting data from software. Consequently, even if the operating system is compromised, the data may still be secure (see Software Guard Extensions). == Disadvantages == If, however, the hardware implementation is compromised, major issues arise. Malicious software can retrieve the data from the (supposedly) secure hardware – a large class of method used is the timing attack. This is far more problematic to solve than a software bug, even within the operating system. Microsoft regularly deals with security issues through Windows Update. Similarly, regular security updates are released for Mac OS X and Linux, as well as mobile operating systems like iOS, Android, and Windows Phone. However, hardware is a different issue. Sometimes, the issue will be fixable through updates to the processor's microcode (a low level type of software). However, other issues may only be resolvable through replacing the hardware, or a workaround in the operating system which mitigates the performance benefit of the hardware implementation, such as in the Spectre exploit.

    Read more →
  • NexDock

    NexDock

    NexDock is a series of lapdock devices (containing a laptop screen, keyboard, trackpad, and battery connected to a phone or other device) sold by Nex Computer LLC. The product can be used with mobile desktop environments, including Samsung DeX and the former Windows Continuum. Critical reception for the series has been mixed, with reviewers praising the concept's utility for mobile productivity while noting hardware limitations and its niche appeal. == History == The first NexDock was introduced in 2016 through a successful Indiegogo campaign. Its development coincided with interest in smartphone-powered desktop interfaces, and it was marketed as a companion for Windows 10 Mobile's Continuum feature. Subsequent models, often launched via Kickstarter, added features like higher-resolution displays, touchscreens, and convertible hinges to adapt to the growing capabilities of smartphones. == Models == === NexDock (Original, 2016) === The first model featured a 14.1-inch 1366x768 display and connected primarily via a mini HDMI port. === NexDock 2 (2019) === This model introduced a 13.3-inch 1080p IPS display and a USB-C port, improvements aimed at better supporting platforms like Samsung DeX. === NexDock Touch (2020) === A touchscreen was added to the 13.3-inch display, allowing for more direct interaction with the connected device's operating system. === NexDock 360 (2021) === This version incorporated a 360-degree hinge, allowing the device to be used in laptop, tablet, tent, or stand modes. === NexDock Wireless (2023) === Wireless display connectivity was the key feature of this model, offering a cable-free connection to compatible phones and computers. === NexDock XL (2023) === The screen size was increased to 15.6 inches. It retained the 360-degree hinge and also offered a version with wireless charging for a connected phone. == Reception == Reviews of NexDock products have been mixed, generally praising the concept while pointing out execution flaws. The devices are often lauded for their utility with Samsung DeX, turning a high-end Samsung phone into a viable portable workstation. A review of the NexDock 2 from ZDNet concluded it was a "great companion for the modern road warrior," and Digital Trends called the original a "no-brainer shell" for expanding a phone's capability. However, reviewers have consistently highlighted hardware limitations. In its review of the NexDock Touch, TechRadar stated that while it was a "compelling package for a very specific niche," the "trackpad and keyboard are a bit of a letdown and the screen could be brighter." This sentiment was echoed in other reviews, with criticism often aimed at the trackpad's performance and feel. A review of the NexDock 2 from Android Authority described the experience as being "janky at times," concluding that the device "delivers on its promise — sort of." A common point across many reviews is that the overall performance is entirely dependent on the power of the connected phone, and the experience is often best suited for light productivity tasks rather than replacing a dedicated laptop.

    Read more →
  • Confused deputy problem

    Confused deputy problem

    In information security, a confused deputy is a computer program that is tricked by another program (with fewer privileges or less rights) into misusing its authority on the system. It is a specific type of privilege escalation. The confused deputy problem is often cited as an example of why capability-based security is important. Capability systems protect against the confused deputy problem, whereas access-control list–based systems do not. Such systems can mitigate the confused deputy problem by eliminating ambient authority, allowing programs to act only on resources for which they hold explicit capabilities, whereas access-control list–based systems are more susceptible to it. However, this protection depends on correct implementation; in formally verified capability systems such as seL4, it can be shown that the kernel enforces capability constraints correctly, preventing such behavior at the system level. == Example == In the original example of a confused deputy, there was a compiler program provided on a commercial timesharing service. Users could run the compiler and optionally specify a filename where it would write debugging output, and the compiler would be able to write to that file if the user had permission to write there. The compiler also collected statistics about language feature usage. Those statistics were stored in a file called "(SYSX)STAT", in the directory "SYSX". To make this possible, the compiler program was given permission to write to files in SYSX. But there were other files in SYSX: in particular, the system's billing information was stored in a file "(SYSX)BILL". A user ran the compiler and named "(SYSX)BILL" as the desired debugging output file. This produced a confused deputy problem. The compiler made a request to the operating system to open (SYSX)BILL. Even though the user did not have access to that file, the compiler did, so the open succeeded. The compiler wrote the compilation output to the file (here "(SYSX)BILL") as normal, overwriting it, and the billing information was destroyed. === The confused deputy === In this example, the compiler program is the deputy because it is acting at the request of the user. The program is seen as 'confused' because it was tricked into overwriting the system's billing file. Whenever a program tries to access a file, the operating system needs to know two things: which file the program is asking for, and whether the program has permission to access the file. In the example, the file is designated by its name, “(SYSX)BILL”. The program receives the file name from the user, but does not know whether the user had permission to write the file. When the program opens the file, the system uses the program's permission, not the user's. When the file name was passed from the user to the program, the permission did not go along with it; the permission was increased by the system silently and automatically. It is not essential to the attack that the billing file be designated by a name represented as a string. The essential points are that: the designator for the file does not carry the full authority needed to access the file; the program's own permission to access the file is used implicitly. == Other examples == A cross-site request forgery (CSRF) is an example of a confused deputy attack that uses the web browser to perform sensitive actions against a web application. A common form of this attack occurs when a web application uses a cookie to authenticate all requests transmitted by a browser. Using JavaScript, an attacker can force a browser into transmitting authenticated HTTP requests. The Samy computer worm used cross-site scripting (XSS) to turn the browser's authenticated MySpace session into a confused deputy. Using XSS the worm forced the browser into posting an executable copy of the worm as a MySpace message which was then viewed and executed by friends of the infected user. Clickjacking is an attack where the user acts as the confused deputy. In this attack a user thinks they are harmlessly browsing a website (an attacker-controlled website) but they are in fact tricked into performing sensitive actions on another website. An FTP bounce attack can allow an attacker to connect indirectly to TCP ports to which the attacker's machine has no access, using a remote FTP server as the confused deputy. Another example relates to personal firewall software. It can restrict Internet access for specific applications. Some applications circumvent this by starting a browser with instructions to access a specific URL. The browser has authority to open a network connection, even though the application does not. Firewall software can attempt to address this by prompting the user in cases where one program starts another which then accesses the network. However, the user frequently does not have sufficient information to determine whether such an access is legitimate—false positives are common, and there is a substantial risk that even sophisticated users will become habituated to clicking "OK" to these prompts. Not every program that misuses authority is a confused deputy. Sometimes misuse of authority is simply a result of a program error. The confused deputy problem occurs when the designation of an object is passed from one program to another, and the associated permission changes unintentionally, without any explicit action by either party. It is insidious because neither party did anything explicit to change the authority. Another example is when an administrator authorizes an AI agent to act on their behalf, and that AI subsequently delegates authority to another AI agent neither vetted nor authorized by the original administrator. The unvetted AI can then act without permissions or oversight from the original developer. == Solutions == In some systems it is possible to ask the operating system to open a file using the permissions of another client. This solution has some drawbacks: It requires explicit attention to security by the server. A naive or careless server might not take this extra step. It becomes more difficult to identify the correct permission if the server is in turn the client of another service and wants to pass along access to the file. It requires the client to trust the server to not abuse the borrowed permissions. Note that intersecting the server and client's permissions does not solve the problem either, because the server may then have to be given very wide permissions (all of the time, rather than those needed for a given request) in order to act for arbitrary clients. The simplest way to solve the confused deputy problem is to bundle together the designation of an object and the permission to access that object. This is exactly what a capability is. Using capability security in the compiler example, the client would pass to the server a capability to the output file, such as a file descriptor, rather than the name of the file. Since it lacks a capability to the billing file, it cannot designate that file for output. In the cross-site request forgery example, a URL supplied "cross"-site would include its own authority independent of that of the client of the web browser.

    Read more →
  • Digital video recorder

    Digital video recorder

    A digital video recorder (DVR), also referred to as a personal video recorder (PVR) particularly in Canadian and British English, is an electronic device that records video in a digital format to a disk drive, USB flash drive, SD memory card, SSD or other local or networked mass storage device. The term includes set-top boxes (STB) with direct to disk recording, portable media players and TV gateways with recording capability, and digital camcorders. Personal computers can be connected to video capture devices and used as DVRs; in such cases the application software used to record video is an integral part of the DVR. Many DVRs are classified as consumer electronic devices. Similar small devices with built-in (~5 inch diagonal) displays and SSD support may be used for professional film or video production, as these recorders often do not have the limitations that built-in recorders in cameras have, offering wider codec support, the removal of recording time limitations and higher bitrates. == History == In the 1980s, prototype high-definition (HD) digital video recorders were developed by Fujitsu, Hitachi, Sanyo and Canon Inc. In 1985, Hitachi demonstrated a prototype digital video tape recorder (VTR) that used digital recording video tape as storage media to record digital HD video content. In 1987, the first commercial digital video recorder was the Sony DVR-1000, a digital video cassette recorder (VCR) that recorded digital video content on D-1 (Sony) digital video cassettes. === Hard-disk-based DVR === In early 1995, Tektronix introduced the "Profile" series PDR100 Video Disk Recorder, which recorded and played back video stored on hard disk as motion JPEG. In 1996, Sweden's TV4 used the PDR100 extensively in building a new facility in Stockholm, and NBC used PDR100s at the Olympic games in Atlanta Georgia. The Tektronix Profile disk recorder won an Engineering, Science & Technology Emmy Award for "Outstanding Achievement in Engineering Development" at the 1996 Primetime Emmy Awards. In 1997 the U.S. Patent Office granted Tektronix patent 5,642,497 for two claims key to Profile. In 1998, Tektronix introduced two Profile models which were combined VDRs and file servers: the PDR200 and PDR300. The PDR300 stored its compressed video as MPEG-2 (ISO/IEC 13818-2) A working disk-based DVR prototype was developed in 1998 at Stanford University Computer Science department. The DVR design was a chapter of Edward Y. Chang's PhD dissertation, supervised by Professors Hector Garcia-Molina and Jennifer Widom. Two design papers were published at the 1998 VLDB conference, and the 1999 ICDE conference. The prototype was developed in 1998 at Pat Hanrahan's CS488 class: Experiments in Digital Television, and the prototype was demoed to industrial partners including Sony, Intel, and Apple. Consumer digital video recorders ReplayTV and TiVo were launched at the 1999 Consumer Electronics Show in Las Vegas, Nevada. Microsoft also demonstrated a unit with DVR capability, but this did not become available until the end of 1999 for full DVR features in Dish Network's DISHplayer receivers. TiVo shipped their first units on March 31, 1999. ReplayTV won the "Best of Show" award in the video category with Netscape co-founder Marc Andreessen as an early investor and board member, but TiVo was more successful commercially. Ad Age cited Forrester Research as saying that market penetration by the end of 1999 was "less than 100,000". In 2001, Toshiba introduced a combination DVR that allows video recording on both DVD recordable and hard disk drive. Legal action by media companies forced ReplayTV to remove many features such as automatic commercial skip and the sharing of recordings over the Internet, but newer devices have steadily regained these functions while adding complementary abilities, such as recording onto DVDs and programming and remote control facilities using PDAs, networked PCs, and Web browsers. In contrast to VCRs, hard-disk based digital video recorders make "time shifting" more convenient and also allow for functions such as pausing live TV, instant replay, chasing playback (viewing a recording before it has been completed) and skipping over advertising during playback. Many DVRs use the MPEG format for compressing the digital video. Video recording capabilities have become an essential part of the modern set-top box, as TV viewers have wanted to take control of their viewing experiences. As consumers have been able to converge increasing amounts of video content on their set-tops, delivered by traditional 'broadcast' cable, satellite and terrestrial as well as IP networks, the ability to capture programming and view it whenever they want has become a must-have function for many consumers. === DVR tied to video service === At the 1999 CES, Dish Network demonstrated the hardware that would later have DVR capability with the assistance of Microsoft software, which also included access to the WebTV service. By the end of 1999 the Dishplayer had full DVR capabilities and within a year, over 200,000 units were sold. In the UK, digital video recorders are often referred to as "plus boxes" (such as BSKYB's Sky+ and Virgin Media's V+ which integrates an HD capability, and the subscription free Freesat+ and Freeview+). Freeview+ have been around in the UK since the late 2000s, although the platform's first DVR, the Pace Twin, dates to 2002. British Sky Broadcasting marketed a popular combined receiver and DVR as Sky+, now replaced by the Sky Q box. TiVo launched a UK model in 2000, and is no longer supported, except for third party services, and the continuation of TiVo through Virgin Media in 2010. South African based Africa Satellite TV beamer Multichoice recently launched their DVR which is available on their DStv platform. In addition to ReplayTV and TiVo, there are a number of other suppliers of digital terrestrial (DTT) DVRs, including Technicolor SA, Topfield, Fusion, Commscope, Humax, VBox Communications, AC Ryan Playon and Advanced Digital Broadcast (ADB). Many satellite, cable and IPTV companies are incorporating digital video recording functions into their set-top box, such as with DirecTiVo, DISHPlayer/DishDVR, Scientific Atlanta Explorer 8xxx from Time Warner, Total Home DVR from AT&T U-verse, Motorola DCT6412 from Comcast and others, Moxi Media Center by Digeo (available through Charter, Adelphia, Sunflower, Bend Broadband, and soon Comcast and other cable companies), or Sky+. Astro introduced their DVR system, called Astro MAX, which was the first PVR in Malaysia but was phased out two years after its introduction. In the case of digital television, there is no encoding necessary in the DVR since the signal is already a digitally encoded MPEG stream. The digital video recorder simply stores the digital stream directly to disk. Having the broadcaster involved with, and sometimes subsidizing, the design of the DVR can lead to features such as the ability to use interactive TV on recorded shows, pre-loading of programs, or directly recording encrypted digital streams. It can, however, also force the manufacturer to implement non-skippable advertisements and automatically expiring recordings. In the United States, the FCC has ruled that starting on July 1, 2007, consumers will be able to purchase a set-top box from a third-party company, rather than being forced to purchase or rent the set-top box from their cable company. This ruling only applies to "navigation devices", otherwise known as a cable television set-top box, and not to the security functions that control the user's access to the content of the cable operator. The overall net effect on digital video recorders and related technology is unlikely to be substantial as standalone DVRs are currently readily available on the open market. In Europe Free-To-Air and Pay TV TV gateways with multiple tuners have whole house recording capabilities allowing recording of TV programs to Network Attached Storage or attached USB storage, recorded programs are then shared across the home network to tablet, smartphone, PC, Mac, Smart TV. === Introduction of dual tuners === In 2003 many Satellite and Cable providers introduced dual-tuner digital video recorders. In the UK, BSkyB introduced their first PVR Sky+ with dual tuner support in 2001. These machines have two independent tuners within the same receiver. The main use for this feature is the capability to record a live program while watching another live program simultaneously or to record two programs at the same time, possibly while watching a previously recorded one. Kogan.com introduced a dual-tuner PVR in the Australian market allowing free-to-air television to be recorded on a removable hard drive. Some dual-tuner DVRs also have the ability to output to two separate television sets at the same time. The PVR manufactured by UEC (Durban, South Africa) and used by Multichoice and Scientific Atlanta 8300DVB PVR have the ability to view two

    Read more →
  • Ajax (programming)

    Ajax (programming)

    The Asynchronous JavaScript and XML, usually referred to as Ajax (or AJAX, ) is a set of web development techniques that uses various web technologies on the client-side to create asynchronous web applications. With Ajax, web applications can send and retrieve data from a server asynchronously (in the background) without interfering with the display and behaviour of the existing page. By decoupling the data interchange layer from the presentation layer, Ajax allows web pages and, by extension, web applications, to change content dynamically without the need to reload the entire page. In practice, modern implementations commonly utilize JSON instead of XML. Ajax is not a technology, but rather a programming pattern. HTML and CSS can be used in combination to mark up and style information. The webpage can be modified by JavaScript to dynamically display (and allow the user to interact with) the new information. The built-in XMLHttpRequest object is used to execute Ajax on webpages, allowing websites to load content onto the screen without refreshing the page. == History == In the early-to-mid 1990s, most Websites were based on complete HTML pages. Each user action required a complete new page to be loaded from the server. This process was inefficient, as reflected by the user experience: all page content disappeared, then the new page appeared. Each time the browser reloaded a page because of a partial change, all the content had to be re-sent, even though only some of the information had changed. This placed additional load on the server and made bandwidth a limiting factor in performance. The foundations of AJAX originate back in 1996 with the introduction of JavaScript 1. Developers quickly discovered that any HTML element which accepted a "src" attribute could be used to fetch remote data. By changing the src of a hidden frame, a developer could fetch remote data, process or display it without a page refresh. The remote data could be a string, JavaScript code, XML or a partial HTML page generated on the server. The same could be done with and tags, but many developers were alarmed at the concept of an executable GIF and preferred to use the hidden