How to read (std::io::Read) from a Vec or Slice?
Asked 2 years, 5 months ago
Active 2 years, 5 months ago
Viewed 3k times
8
1
Vec
s support std::io::Write
, so code can be written that takes a File
or Vec
, for example. From the API reference, it looks like neither Vec
nor slices support std::io::Read
.
Is there a convenient way to achieve this? Does it require writing a wrapper struct?
Here is an example of working code, that reads and writes a file, with a single line commented that should read a vector.
use ::std::io;
// Generic IO
fn write_4_bytes<W>(mut file: W) -> Result<usize, io::Error>
where W: io::Write,
{
let len = file.write(b"1234")?;
Ok(len)
}
fn read_4_bytes<R>(mut file: R) -> Result<[u8; 4], io::Error>
where R: io::Read,
{
let mut buf: [u8; 4] = [0; 4];
file.read(&mut buf)?;
Ok(buf)
}
// Type specific
fn write_read_vec() {
let mut vec_as_file: Vec<u8> = Vec::new();
{ // Write
println!("Writing Vec... {}", write_4_bytes(&mut vec_as_file).unwrap());
}
{ // Read
// println!("Reading File... {:?}", read_4_bytes(&vec_as_file).unwrap());
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// Comment this line above to avoid an error!
}
}
fn write_read_file() {
let filepath = "temp.txt";
{ // Write
let mut file_as_file = ::std::fs::File::create(filepath).expect("open failed");
println!("Writing File... {}", write_4_bytes(&mut file_as_file).unwrap());
}
{ // Read
let mut file_as_file = ::std::fs::File::open(filepath).expect("open failed");
println!("Reading File... {:?}", read_4_bytes(&mut file_as_file).unwrap());
}
}
fn main() {
write_read_vec();
write_read_file();
}
This fails with the error:
error[E0277]: the trait bound `std::vec::Vec<u8>: std::io::Read` is not satisfied
--> src/main.rs:29:42
|
29 | println!("Reading File... {:?}", read_4_bytes(&vec_as_file).unwrap());
| ^^^^^^^^^^^^ the trait `std::io::Read` is not implemented for `std::vec::Vec<u8>`
|
= note: required by `read_4_bytes`
I’d like to write tests for a file format encoder/decoder, without having to write to the file-system.
[](https://stackoverflow.com/users/155423/shepmaster)
176k2121 gold badges388388 silver badges544544 bronze badges
asked Feb 15 ‘17 at 4:17
[](https://stackoverflow.com/users/432509/ideasman42)
14.2k88 gold badges8181 silver badges157157 bronze badges
I have deleted my answer. This question is now substantially bigger and provides alot more context than when originally asked. – Simon Whitehead Feb 15 ‘17 at 5:33
@simon-whitehead, apologies for not giving a comprehensive question initially, I thought there might be some totally obvious thing I was missing which didn’t require working code example. – ideasman42 Feb 15 ‘17 at 8:59
add a comment
1 Answer
15
While vectors don’t support std::io::Read
, slices do.
There is some confusion here caused by Rust being able to coerce a Vec
into a slice in some situations but not others.
In this case, an explicit coercion to a slice is needed because at the stage coercions are applied, the compiler doesn’t know that Vec<u8>
doesn’t implement Read
.
The code in the question will work when the vector is coerced into a slice, either as: read_4_bytes(&*vec_as_file)
or read_4_bytes(&vec_as_file[..])
.
Note:
- When asking the question initially, I was taking
&Read
instead ofRead
. This made passing a reference to a slice fail, unless I’d passed in&&*vec_as_file
which I didn’t think to do. - Thanks to @arete on
#rust
for finding the solution!
[](https://stackoverflow.com/users/155423/shepmaster)
176k2121 gold badges388388 silver badges544544 bronze badges
answered Feb 15 ‘17 at 5:11
[](https://stackoverflow.com/users/432509/ideasman42)
14.2k88 gold badges8181 silver badges157157 bronze badges
add a comment
Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.
Your Answer
use std::fs::File;
use std::io::Read;
fn read_a_file() -> std::io::Result<Vec<u8>> {
let mut file = try!(File::open("example.data"));
let mut data = Vec::new();
try!(file.read_to_end(&mut data));
return Ok(data);
}
use std::env;
use std::fs::File;
use std::io::Write;
fn main() {
// Create a temporary file.
let temp_directory = env::temp_dir();
let temp_file = temp_directory.join("file");
// Open a file in write-only (ignoring errors).
// This creates the file if it does not exist (and empty the file if it exists).
let mut file = File::create(temp_file).unwrap();
// Write a &str in the file (ignoring the result).
writeln!(&mut file, "Hello World!").unwrap();
// Write a byte string.
file.write(b"Bytes\n").unwrap();
}
rust writing vecu16 to a file
What is the correct way to write Vec<u16>
content to a file?
Asked 4 years, 1 month ago
Active 1 year, 11 months ago
Viewed 3k times
6
2
I’m having trouble writing Vec<u16>
content to a file:
use std::fs::File;
use std::io::{Write, BufWriter};
use std::mem;
#[derive(Debug, Copy, Clone, PartialEq)]
pub enum ImageFormat {
GrayScale,
Rgb32,
}
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct ImageHeader {
pub width: usize,
pub height: usize,
pub format: ImageFormat,
}
pub struct Image {
pub header: ImageHeader,
pub data: Vec<u16>,
}
fn write_to_file(path: &str, img: &Image) -> std::io::Result<()> {
let f = try!(File::create(path));
let mut bw = BufWriter::new(f);
let slice = &img.data[..];
println!("before length: {}", slice.len());
let sl: &[u8];
unsafe {
sl = mem::transmute::<&[u16], &[u8]>(slice);
}
println!("after length: {}", sl.len());
try!(bw.write_all(sl));
return Ok(());
}
fn main() {}
Since write_all()
asks for a &[u8]
, I’m doing an unsafe conversion of &[u16]
to &[u8]
. Because the conversion does not change the slice length (slice.len()
and sl.len()
have the same values), only half of the image data is output to the file.
It would be better if I don’t need any unsafe conversion or copying.
[](https://stackoverflow.com/users/155423/shepmaster)
176k2121 gold badges388388 silver badges544544 bronze badges
asked Jun 15 ‘15 at 6:08
[](https://stackoverflow.com/users/2432759/rillomas)
9311 silver badge88 bronze badges
add a comment
2 Answers
7
To do it directly you’d want to use std::slice::from_raw_parts()
:
use std::slice;
use std::mem;
fn main() {
let slice_u16: &[u16] = &*vec![1, 2, 3, 4, 5, 6];
println!("u16s: {:?}", slice_u16);
let slice_u8: &[u8] = unsafe {
slice::from_raw_parts(
slice_u16.as_ptr() as *const u8,
slice_u16.len() * mem::size_of::<u16>(),
)
};
println!("u8s: {:?}", slice_u8);
}
It does require unsafe
because from_raw_parts()
can’t guarantee that you can only pass a valid pointer to it, and it also can create slices with arbitrary lifetime.
However, this approach is not only potentially unsafe, it is also not portable. When you work with integers larger than one byte, endianness issues immediately arise. If you write a file in this way on a x86 machine, you would then read garbage on an ARM machine. The proper way is to use libraries like byteorder
which allow you to specify endianness explicitly:
extern crate byteorder;
use byteorder::{WriteBytesExt, LittleEndian};
fn main() {
let slice_u16: &[u16] = &*vec![1, 2, 3, 4, 5, 6];
println!("u16s: {:?}", slice_u16);
let mut result: Vec<u8> = Vec::new();
for &n in slice_u16 {
let _ = result.write_u16::<LittleEndian>(n);
}
println!("u8s: {:?}", result);
}
Note that I’ve used Vec<u8>
here, but it implements Write
, and write_u16()
and other methods from WriteBytesExt
trait are defined on any Write
, so you could use these methods directly on a BufWriter
, for example.
While this may be slightly less efficient than reinterpreting a piece of memory, it is safe and portable.
[](https://stackoverflow.com/users/155423/shepmaster)
176k2121 gold badges388388 silver badges544544 bronze badges
answered Jun 15 ‘15 at 6:33
[](https://stackoverflow.com/users/788207/vladimir-matveev)
75.7k1818 gold badges194194 silver badges229229 bronze badges
- Thanks! I tried your method of using
slice::from_raw_parts()
and it worked perfectly. – rillomas Jun 16 ‘15 at 0:14
add a comment
5
I recommend using existing libraries for serialization such as serde and bincode:
extern crate bincode;
extern crate serde;
#[macro_use]
extern crate serde_derive;
use std::error::Error;
#[derive(Serialize, Deserialize, Debug, Copy, Clone, PartialEq)]
pub enum ImageFormat {
GrayScale,
Rgb32,
}
#[derive(Serialize, Deserialize, Debug, Copy, Clone, PartialEq)]
pub struct ImageHeader {
pub width: usize,
pub height: usize,
pub format: ImageFormat,
}
#[derive(Serialize, Deserialize)]
pub struct Image {
pub header: ImageHeader,
pub data: Vec<u16>,
}
impl Image {
fn save_to_disk(&self, path: &str) -> Result<(), Box<Error>> {
use std::fs::File;
use std::io::Write;
let bytes: Vec<u8> = try!(bincode::serialize(self, bincode::Infinite));
let mut file = try!(File::create(path));
file.write_all(&bytes).map_err(|e| e.into())
}
}
fn main() {
let image = Image {
header: ImageHeader {
width: 2,
height: 2,
format: ImageFormat::GrayScale,
},
data: vec![0, 0, 0, 0],
};
match image.save_to_disk("image") {
Ok(_) => println!("Saved image to disk"),
Err(e) => println!("Something went wrong: {:?}", e.description()),
}
}
[](https://stackoverflow.com/users/155423/shepmaster)
176k2121 gold badges388388 silver badges544544 bronze badges
answered Jun 15 ‘15 at 8:45
[](https://stackoverflow.com/users/2301531/a-b)
8,81511 gold badge3434 silver badges4949 bronze badges
1
Thanks! I also tried your method of using bincode + rustc-serialize, and personally I prefer this method more than dumping raw data to a file (no
unsafe
, no need to worry about endianness). I’m accepting Vladimir’s answer because it was more on topic, but like you said using serialization is probably the better way. – rillomasJun 16 ‘15 at 0:26
add a comment
Your Answer
use std::io::prelude::*;
use std::io::{self, SeekFrom};
use std::fs::File;
// a library function we've written
fn write_ten_bytes_at_end<W: Write + Seek>(writer: &mut W) -> io::Result<()> {
writer.seek(SeekFrom::End(-10))?;
for i in 0..10 {
writer.write(&[i])?;
}
// all went well
Ok(())
}
// Here's some code that uses this library function.
//
// We might want to use a BufReader here for efficiency, but let's
// keep this example focused.
let mut file = File::create("foo.txt")?;
write_ten_bytes_at_end(&mut file)?;
// now let's write a test
#[test]
fn test_writes_bytes() {
// setting up a real File is much slower than an in-memory buffer,
// let's use a cursor instead
use std::io::Cursor;
let mut buff = Cursor::new(vec![0; 15]);
write_ten_bytes_at_end(&mut buff).unwrap();
assert_eq!(&buff.get_ref()[5..15], &[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
}
https://www.reddit.com/r/rust/comments/4ml1fw/want_to_use_stdioreadwrite_for_my_vecu8/
http://databasefaq.com/index.php/answer/2851/rust-writing-vecu16-to-a-file
How to create a binary file with Rust?
Asked 7 months ago
Active 7 months ago
Viewed 2k times
2
I can write binary code to file with Rust. However, when I create a file, the file created is a text file, not binary. I can create a binary file with C++ like this:
ofstream is("1.in", ofstream::binary | ofstream::out | ofstream:: trunc);
How about in Rust? This is my attempt:
struct IndexDataStructureInt {
row: u32,
key_value: u32,
}
let mut index_arr: Vec<IndexDataStructureInt> = Vec::new();
// doing something push 100 IndexDataStructureInt to index_arr
let mut fileWrite = File::create(tableIndexName).unwrap();
for i in 0..index_arr.len() {
write!(
fileWrite,
"{:b}{:b}",
index_arr[i].row, index_arr[i].key_value
);
}
After running this code, it writes 200 u32 integer binary number to the file tableIndexName
. However, the file size is not 800bytes. It is about 4KB.
[](https://stackoverflow.com/users/493729/peter-hall)
20.6k88 gold badges4747 silver badges102102 bronze badges
asked Dec 18 ‘18 at 4:24
[](https://stackoverflow.com/users/10804208/yen-chun-lee)
1633 bronze badges
2
Can you share the sample code you are currently using to write & read the file? What makes you think the file is not “binary”? – harmic Dec 18 ‘18 at 4:49
@harmic hi thank you for response. I add some code in my question. – Yen Chun Lee Dec 18 ‘18 at 5:34
Welcome to Stack Overflow! Idiomatic Rust uses
snake_case
for variables, methods, macros, and fields;UpperCamelCase
for types and enum variants; andSCREAMING_SNAKE_CASE
for statics and constants. Usefile_write
andtable_index_name
instead, please. – Shepmaster Dec 18 ‘18 at 15:13
add a comment
1 Answer
9
Rust’s std::fs::File
does not have a concept of opening files in text or binary mode. All files are opened as “binary” files, and no translation of characters such as line feed and carriage return is performed.
Your problem stems from using the write!
macro. This macro is for formatting data into printable format, and should not be used if you want to write binary data. In fact the {:b}
format specifier you have used will convert the value into a printable binary string of ASCII 1
and 0
characters.
Instead, use the functions provided by trait std::io::Write
. This trait is implemented directly by File
, or you can use a BufWriter
for potentially better performance.
For example: here I am using write_all
to write a slice of u8
to a file, then using read_to_end
to read the same file back into a Vec
.
use std::fs::File;
use std::io::prelude::*;
fn main() -> std::io::Result<()> {
{
let mut file = File::create("test")?;
// Write a slice of bytes to the file
file.write_all(&[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])?;
}
{
let mut file = File::open("test")?;
// read the same file back into a Vec of bytes
let mut buffer = Vec::<u8>::new();
file.read_to_end(&mut buffer)?;
println!("{:?}", buffer);
}
Ok(())
}
[](https://stackoverflow.com/users/155423/shepmaster)
176k2121 gold badges388388 silver badges544544 bronze badges
answered Dec 18 ‘18 at 5:51
[](https://stackoverflow.com/users/1411457/harmic)
16.9k22 gold badges3838 silver badges6262 bronze badges
Why the unnecessary curly braces inside of
main
? – Shepmaster Dec 18 ‘18 at 15:152
@Shepmaster The first pair of braces makes sure the file is closed before it’s opened and read again. This is not strictly needed, since the code is using unbuffered I/O, so you would be able to read the file contents back even before the file is closed. However, this is kind of beside the point for this question, so I think the version including the braces is less confusing. – Sven Marnach Dec 18 ‘18 at 16:06
add a comment
Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.


Kamil X to dynamicznie rozwijający się portal z ogłoszeniami pracy, który dzięki przejrzystej i innowacyjnej formie ogłoszenia szybko zyskał uznanie specjalistów oraz firm poszukujących programistów.
Java expert
What does this team member to? Keep it short! This is also a great spot for social links!
What does this team member to? Keep it short! This is also a great spot for social links!
What does this team member to? Keep it short! This is also a great spot for social links!
What does this team member to? Keep it short! This is also a great spot for social links!
What does this team member to? Keep it short! This is also a great spot for social links!


 A real feast!
Heat the extra virgin olive oil in a large saucepan, then add the onion, carrot, basil and bay leaves and fry gently over a medium heat until the onion has softened slightly.
Add the beef, ribs and sausages and fry for a few minutes, turning, to brown well.
Stir together the tomato puree and the red wine, then add to the saucepan and cook for a few minutes until the volume of the liquid has reduced slightly.
Add the tomatoes, salt, pepper and parmesan and stir well.
Bring to the boil, then reduce the heat to low, cover with a lid and cook for two hours, stirring occasionally.
Lift the meat out of the pot onto a serving plate and keep warm.
Add the cooked pasta to the sauce and stir together to coat all the pasta.
For the salad, whisk together the olive oil and the lemon juice in a small bowl. Place the lettuce leaves into a serving bowl and toss the salad with the dressing.
To serve, ladle the pasta into four serving bowls, top with the meat and serve the salad alongside.


InputReplicationMode
Replication mode for input function.
tf.compat.v1.distribute.InputReplicationMode
tf.compat.v2.distribute.InputReplicationMode
PER_WORKER
: The input function will be called on each worker
independently, creating as many input pipelines as number of workers.
Replicas will dequeue from the local Dataset on their worker.
tf.distribute.Strategy
doesn't manage any state sharing between such
separate input pipelines.


Nested Structure Queries
As with the Browser, the Minibrowser allows for queries about nested structures. The Minibrowser makes these queries available in the Query menu.
Special features, such as filtering, creating groups, and displaying graphs, allow you to gain the maximum benefit from your browsing and querying activities. The books that follow provide detailed information on filtering query results, creating and managing groups, and creating and displaying a graphical representation of Browser data.


Home
Contact Us
Sponsors
Statistics
Team
NEXT GAME
NEWS
{{ story.date }}
{{ story.headline }}
LEAGUE STANDINGS
{{ standing.rank }}
{{ standing.name }}
({{ standing.data1 }})
{{ standing.data2 }}


1
cake
pastry
doughnut
brownie
2
pineapple
apple
pear
plum
3
robin
woodpecker
parrot
crow
4
cricket
hockey
tennis
softball
5
table
armchair
couch
bed
6
footwear
shoes
slippers
trainers
7
road
street
highway
lane
8
fruits
leaves
groceries
supermarket


ForwardingIR
public class ForwardingIR<BaseIR:IntermediateRepresentation> : IntermediateRepresentation
This IntermediateRepresentation
essentially forks the function calls to its two subordinate IntermediateRepresentations
. This allows you to combine
multiple IntermediateRepresentation
s for example your normal data-structure pairs with an instance of DebuggingDelegate
for debugging purposes.
-
The primary, or first
IntermediateRepresentation
Declaration
Swift
public var primary : BaseIR
-
The secondary
IntermediateRepresentation
.Declaration
Swift
public var secondary : IntermediateRepresentation
-
Calling the constructor with no parameters on this implementation will result in a fatal error as both must exist.
Declaration
Swift
public required init()
-
Creates a new instance with a new instance of the
BaseIR
using the required constructor for the specified and then consuming the supplied secondaryIntermediateRepresentaion
Declaration
Swift
public init(secondary:IntermediateRepresentation)
Parameters
secondary
An instance of the secondary
IntermediateRepresentation
-
Creates a new instance with a new instance of the
BaseIR
consuming the supplied primary and secondaryIntermediateRepresentaion
instancesDeclaration
Swift
public init(primary: BaseIR, secondary:IntermediateRepresentation)
Parameters
Primary
An instance of the primary
IntermediateRepresentation
secondary
An instance of the secondary
IntermediateRepresentation
-
Forwarded to both primary and secondary
Intermediate Representations
Declaration
Swift
public func willBuildFrom(source: String, with: Language)
-
Forwarded to both primary and secondary
Intermediate Representations
Declaration
Swift
public func resetState()
-
Forwarded to both primary and secondary
Intermediate Representations
Declaration
Swift
public func willEvaluate(rule: Rule, at position: String.UnicodeScalarView.Index) -> MatchResult?
-
Forwarded to both primary and secondary
Intermediate Representations
Declaration
Swift
public func didEvaluate(rule: Rule, matchResult: MatchResult)
-
Forwarded to both primary and secondary
Intermediate Representations
Declaration
Swift
public func didBuild()


Jackets
Filter by:
All Jackets
2016
jacket
Jackets
layers
Obermeyer
Roxy
womens
Sort by:
Featured
Best Selling
Alphabetically, A-Z
Alphabetically, Z-A
Price, low to high
Price, high to low
Date, new to old
Date, old to new
Winter Jacket
$99.99
Winter Jacket
$99.99
Winter Jacket
$99.99
Winter Jacket
$99.99
Winter Jacket
$99.99
Winter Jacket
$99.99
Winter Jacket
$99.99
Winter Jacket
$99.99
Winter Jacket
$99.99
Winter Jacket
$99.99


DfE enquiries
Central newsdesk 020 7783 8300
General enquiries 0370 000 2288
Press release
Information on academies’ GCSE results, which have improved by more than twice the level of other maintained schools.
Only a fifth of pupils took the core academic GCSEs this year.
Figures out today reveal that academies’ GCSE results have improved by more than twice the level of other maintained schools.
The provisional GCSE results for 2011 show that:
The statistic for academies is based on the 166 sponsored academies with results in both 2010 and 2011. Their performance is particularly impressive as these academies replaced historically underperforming schools in deprived areas.
Schools Minister Nick Gibb said:
The government believes that teachers and head teachers know best how to run schools. Academy status gives professionals the freedom they need to do their job and today’s figures show that that autonomy works. Academies continue to outperform the national average, completely transforming previously underperforming schools serving some of the most deprived communities.
The government is turning around more underperforming schools than ever before. In May 2010 there were a total of 203 sponsored academies. Since then the coalition has opened 116 more sponsored academies. More sponsored academies will open this academic year than in the history of the academies programme. The government has also allowed good schools to take on academy freedoms. 1,031 schools have chosen to do so.
The results also show that just a fifth of pupils studied the core academic subjects that make up the English Baccalaureate (EBacc). Only one in six pupils managed to secure good grades in a combination of English, maths, a language, history or geography, and two sciences.
The provisional GCSE results for 2011 show that:
Ministers have been clear that all pupils, regardless of their background, should be given the opportunity to study the core academic subjects.
Research recently published by the Department for Education showed the huge positive impact the EBacc is having on future GCSE choices. Since its introduction, 47 per cent of pupils taking GCSEs in 2013 are now studying a combination of EBacc subjects.
The researched showed that, compared to entries in 2010, there is an increase in the percentage of pupils taking GCSEs in the EBacc subjects in 2013 by:
Schools Minister Nick Gibb said:
It is a scandal that four-fifths of our 16-year-olds did not take the core academic GCSEs that universities and employers demand - when far more are capable of doing so.
Parents across the country rightly expect that their child will receive a broad and balanced education that includes English, maths, science, a language and history or geography. Sadly, all too often it is the pupils from the poorest backgrounds who are denied this opportunity. Last year, only 4% of children from poorer backgrounds achieved the English Baccalaureate GCSEs, compared to 17% of their peers.
The coalition government is reversing this shameful decline. Since the introduction of the EBacc, more young people are choosing to study the academic subjects which give them the knowledge and skills they need to progress to further study or to rewarding employment.
The EBacc is not compulsory but it is about closing the attainment gap between rich and poor and about increasing opportunity.
The provisional GCSE and A level results for 2011 also show that:
On A levels, Nick Gibb added:
A Levels are a key stepping stone towards higher education and future careers. It’s only right that we make sure our qualifications match the best in the world and keep pace with the demands of employers and universities.
It is astonishing that three times as many private school pupils are achieving three A grades or higher at A level compared to pupils from state schools. We must close this gap - which is why we are driving up teaching standards across the profession and developing a world-class curriculum for all.
|
Proportion of pupils who took GCSEs in summer 2011 |
Proportion of pupils who took GCSEs in summer 2010 |
Proportion of pupils taking GCSEs in summer 2013 |
2010-2013 change |
Percentage increase in numbers of pupils studying the subject 2010-2013 |
|
| (subject entries) | (subject entries) | (subject choices) | |||
|
Ebacc Combination |
23% | 22% | 47% | + 25% pts | 115% |
| History | 30% | 31% | 39% | + 8% pts | 26% |
| Geography | 25% | 26% | 33% | + 7% pts | 28% |
| Language | 41% | 43% | 52% | + 9% pts | 22% |
| Triple Science* | 21% | 16% | 29% | + 13% pts | 82% |
The NatCen survey was published in August 2011 and it showed that:
Since last year a large number of iGCSEs, many of them with significant numbers of entries, have been accredited and have therefore now been included in these statistics. These have had a significant effect on the statistics published in this SFR, most notably for those covering the independent schools. This is reflected in the overall number of pupils achieving 5 A*-C grades including English and maths.
The English Baccalaureate was introduced by the Department for Education as an additional measure in the performance tables published in January 2011.
In 2010, 22% of pupils were entered for the EBacc, with 15.6% achieving the award.
For these statistics, the date of 12 September 2010 has been used to determine the status of a school. Any schools which converted to an academy on or before this date have been published as an academy and those that have converted after this date have been treated as their predecessor school type.
The statistic for academies is based on the 166 sponsored academies that had results in both 2010 and 2011. This group of academies is used so that the year-on-year comparison is made across a consistent group of schools.
Central newsdesk 020 7783 8300
General enquiries 0370 000 2288
Website: www.education.gov.uk/help/contactus
Published: 20 October 2011


About Hashbase
Hashbase is a public peer for files published with the Dat protocol.
Dat is a peer-to-peer protocol for sharing datasets and files. When you use Dat, your files are distributed across the network of peers who you've shared your files with.
Why use Hashbase? Reliability and discovery!
Publishing with Dat means that peers will contribute bandwidth, but only if they're online and sharing your files. If nobody's hosting your files, then they won't be accessible.
That's where Hashbase comes in. We act as a "super peer" that makes sure your content is always available.
Team
We also partner closely with the Dat Project. Hashbase would not be possible without their hard work and innovation.


Uganda orders recall of 4 million defective condoms
Kampala. Marie Stopes Uganda has been directed to recall two batches of Life Guard brand condoms from the Ugandan market following customers’ complaints.
According to a letter issued by the National Drug Authority (NDA), the condoms from batches- 19040205 and 19050105 manufactured in April and May 2019 with expiry dates for March and April 2024 do not meet market standards.
Ms Victoria Nambasa, the product safety officer at NDA says the condoms were not free from “holes and burst properties”.
It is estimated that over 4 million condoms produced in the batches will be affected. On the open market, a packet of Life Guard condoms costs between Shs1,500 and Shs2,000.
"We have given you two weeks to submit a recall status report indicating the details of distribution and the clients that have been notified of the recall," Ms Nambasa said in the directive.
Mr Fred Ssekyana, the Public Relations Officer of the NDA says that they have teams in the field to ensure that the directive is enforced.
Advertisement
"The process is on and we are working with the distributors of the condoms to make sure that the affected batches are off the market," Mr Ssekyana said.
Mr Sam Lemi, from Marie Stopes says they have begun the recall process and it should be complete soon.
"We started the process and expect it to be completed soon. We are investigating what could have gone wrong," Mr Lemi said.
According to data from the Ministry of Health, an estimated 800 million condoms are needed to protect Ugandans from unplanned pregnancies, HIV/AIDS and other sexually transmitted diseases.


I am indeed an old-school type of guy, well, at least from my appearance. However, when it comes to web design and development, I can’t let the new technology slipping through my radar. It will risk my serious-hobby, and I don’t want to be called outdated wannabe web designer.
I am indeed an old-school type of guy, well, at least from my appearance. However, when it comes to web design and development, I can’t let the new technology slipping through my radar. It will risk my serious-hobby, and I don’t want to be called outdated wannabe web designer.


---
layout: page
title: Art
permalink: /art/
desc: 藝術・ワークス・TBC
---
视界
{% for post in site.categories.review %}
{% include themes/{{ site.amsf_theme }}/includes/page-item.html %}
{% endfor %}
虚构
{% for post in site.categories.fiction %}
{% include themes/{{ site.amsf_theme }}/includes/page-item.html %}
{% endfor %}
转载
{% for post in site.categories.zza %}
{% include themes/{{ site.amsf_theme }}/includes/page-item.html %}
{% endfor %}


Notebooks
Story: The two Lions, the Lizards, the Blue Crane, the Rhebuck, and the Black Crow
The two Lions, the Lizards, the Blue Crane, the Rhebuck, and the Black Crow
Title
The two Lions, the Lizards, the Blue Crane, the Rhebuck, and the Black Crow
Collection
Summary
The Two Lions, the Lizards, the Blue Crane, the Rhebok and the Crow. By /han≠kass’o (L VIII.-32. 8859-8878, 8848-8852, 19. 7643-7656).  They carry their flesh to the home of the Blue Crane and her companion, the Rhebok |ke-dde (the wives of the dead lizards), pretending to be the dead husbands. |ke-dde and the Blue Crane escape, but the Blue Crane returns home to fetch her child and is killed. The Lions find the others (|ke-dde, ||horu and |ke-dde's child), who wait for the Lions on top of a bare rock and are protected by the stones. The Black Crow draws |ke-dde up with a thong and heats stones on the ground below her house. The Black Crow throws the thong down for the Lion, and the Lion falls down onto the hot stones and dies.
Comments
1) Date on p.8864: 9 December; p.7643: 11 December 1879, 2) See also Note on the two Lions, 3) |han≠kass'o heard this from his mother (|xabbi-an) and his maternal grandmother (≠kammi); the |gi (lizard) is 'beautiful', 4) p.8867v: what the people say when they are thirsty, 5) p.8875v: the people's name for a python, 6) p.8877v: what people say to a companion or 'mate', 7) p.8848v: ||horu and the kochelman, 8) p.8850v: despite being people and possessing arrows, the Lions bite things rather than shoot them, 9) p.7645v: the Rhebok's name was |ke-dde when she was a person, 10) This story is found in Books VIII-19 and VIII-32
Contributors
|han≠kass'o (Klein Jantje) (VIII)
Date
9 December 1879 (started on or about)
Categories
Keywords
Early Race (the First Bushmen) , Early Race (the two Lions, the Lizards, the Blue Crane, the Rhebok and the Black Crow) , Early Race (the names of animals when they were people) , Lions (the two) , Lions (are hurt by stones) , Lions (kill |gi and !khau) , Lions (scratch for the lizards) , Lions (and the Rhebok's moving stones) , Lions (one attempts to ascend a thong) , Lions (one falls on the Black Crow's heated stones) , Lions (one attempts to catch the Rhebok |ke-dde) , Lions (and the Lizards, the Blue Crane, the Rhebok and the Black Crow) , Lions (called !gu and !haue ta ≠hou) , Lions (pretend to be husbands) , Lions (one is killed in the Black Crow's fire) , Lions (they want the Rhebok and the Blue Crane as wives) , Lions (are people of the Early Race) , Lizard (called ||horu) , Lizard (and the two Lions, the Blue Crane, the Rhebok and the Black Crow) , Lizard (of the Early Race) , Lizard (the wife of) , Lizard (called !khau) , Lizard (called |gi) , Lizard (lizards are husbands of the Blue Crane and the Rhebok) , Lizard (are killed by the two Lions) , Rhebok (and ||horu) , Rhebok (and the Black Crow) , Rhebok (escapes from Lions) , Rhebok (deceives the Lion) , Rhebok (stones move and cover) , Rhebok (or 'Rhebuck') , Rhebok (called |ke-dde) , Rhebok (of the Early Race) , Rhebok (her name when a person) , Rhebok (is the wife of the |gi) , Rhebok (and the two Lions, the Lizards, the Blue Crane and the Black Crow) , Blue Crane (and the two Lions, the Lizards, the Rhebok and the Black Crow) , Blue Crane (is the wife of the !khau lizard) , Blue Crane (is a person of the Early Race) , Black Crow (her house of sticks) , Black Crow (and the thong that breaks) , Black Crow (she saves the Rhebok |ke-dde) , Black Crow (she heats stones) , Black Crow (and the two Lions, the Lizards, the Blue Crane and the Rhebok) , Black Crow (is a person of the Early Race) , names (the two Lions are called !gu and !haue ta ≠hou) , names (the Rhebok is called |ke-dde) , names (a lizard called !khau) , names (a lizard called ||horu) , names (a lizard called |gi) , names (name of the Rhebok when a person) , names (and the two Lions, the Lizards, the Blue Crane, the Rhebuck, and the Black Crow)
Story Pages
8848-8852, 8859-8878, 7643-7656


While every chord can be inverted, not all are commonly found in popular music. For now we will be focusing on the most commonly used inversions, and we’ll start with the I6 (read “one six”, the first inversion of I).
When a chord is played in an inversion it has a different sound than its root position counterpart even though all notes that make up the chord are the same. This may seem unintuitive, but the bass note turns out to be very important to our ears. First inversion chords are often described as having a softer feel. The I6, for example, doesn’t feel nearly as stable as a conventional home base I chord does. The following is an example of a song which uses both a I chord and a I6 chord in the same progression.
Can you hear the difference between the two uses? Because inverted chords sound different, they are useful for breaking the monotony of using all root position chords. Let’s listen to another common use of the I6 chord.
Even though I and I6 have the same notes, moving to the first inversion from the root position I chord provides an interesting if subtle departure from home base. In the actual recording of “The Road and the Radio” by Kenny Chesney, the departure is made even stronger by the extra strong emphasis that the bass note receives in the actual recording. The strength of the bass note acts almost as a second melody, easily hummable by the listener. This is contrasted with the more subtle use of the I6 in “Heart Of Life” by John Mayer.
I6 goes to the IV chord in both of the above examples, and this is quite typical. The I6 has scale degree 3 in the bass which has a nice sounding stepwise motion to the neighboring scale degree 4 in the root of the IV chord. Another common use of the I6 takes this stepwise motion one step further and uses it to link ii and IV. Consider the following example:
The I6 is used as an effective bridge between ii and IV. By using I6, the bass is able to ascend and descend in a continuous fashion with no jumps in scale degrees. While not as strong as the melody itself, the bass often plays important melodic roles in songs. While you don’t have nearly as much flexibility with the bass as you do the melody, a clever songwriter will often use his/her harmonic knowledge to compose an interesting progression that creates a melodic bass line.


{% include "includes/jquery_scripts.html" %} {% block headscripts %} {% endblock %} {% block extra_head %}{% endblock %}
Apps | Agencies | About | Transit Score
Follow us
Friend us


Moving through the room seems to trip some unseen trap! The pillars break and fall, and you just barely make it to the next area before the entire room collapses in on itself. Dust is in the air and the sound of running water is ahead.


Click to start recording
Bespoke aesthetic mlkshk, post-ironic umami hella plaid selfies. Synth hoodie quinoa, scenester cronut pork belly put a bird on it trust fund semiotics butcher occupy slow-carb tilde Williamsburg Portland. Banh mi Thundercats ennui raw denim listicle. Chia bitters messenger bag paleo hashtag lo-fi migas PBR, banjo vegan butcher meh hoodie. Swag Austin kitsch fixie twee. Gentrify aesthetic keffiyeh, Blue Bottle sartorial butcher street art pickled quinoa ugh gluten-free meggings stumptown try-hard. Hashtag normcore next level irony distillery taxidermy, fanny pack master cleanse artisan Vice squid jean shorts Banksy.


Team Quiz Template
Generates a template for a team quiz, to be pasted into cell A1 of a spreadsheet.
Pick subjects
Choose...
{{o}}
or list/edit your own 8 subjects
{{ArrayLength}}
Rounds
Players Per Team
Spares
Calculate Distribution (can take several seconds)
Click to copy the data, then paste to cell A1 of a spreadsheet
Sort
Index
Num
Level
Pair
Subject
Round
Player
{{q.Sort}}
{{q.Index}}
{{q.Num}}
{{q.Level}}
{{q.Pair}}
{{q.Subject}}
{{q.Round}}
{{q.Player}}


Register with Kowi
Register with Kowi
*Required
*Required
Register with Kowi
*Required
*Required
Register with Kowi
*Required
*Required
*you have missed something
{% load static %}
*Required
*Required
*Required
*Required
*Required
*Required
*you have missed something


Vashti Nilsson
12.31.1937 - 1.8.2017
In loving memory of Vashti, who will be always alive in our heart. Great mother of Cody and the best wife of Jacob. Your attendance at this very sad time will be greatly appreciated.
079 5095 5698
<EMAIL_ADDRESS>East Learmouth, 28 Guildford Rd, Vashti Funeral.
< Back


Traxx Music Library
Playlist
Streams
Outputs
Files
Files
Folders
Search
Songs
Sort
Track no.
Artist
Title
Length
Size
×
Playlist
Status:
unknown
×
Streams
×
Outputs